• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Perlのforkについて)

Perlのforkについて

このQ&Aのポイント
  • Perlのforkを使用して、パラレルでDBに格納するプログラムを作成しています。しかし、forkについて理解が不十分であり、お知恵を拝借したいです。
  • パラレルでのDB格納のために、親子のプロセスが完了したら後続処理を行い、0を戻したいですが、現在の方法では子プロセスが終了した後にreturnしてしまいます。
  • 親子の処理が完了した後に後続処理に移るためには、どのようにすればよいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • shiren2
  • ベストアンサー率47% (139/295)
回答No.1

子プロセスはexitしてしまって構いません。 別プロセスなので、親には影響しません。 >パラレルでのDB格納です。 蛇足ですが、DB格納はデータベースハンドルをコピーすると異常事態にならないとも限らないので、個別に取得した方がいいですよ。 以下サンプルです。 インデントは全角スペースになっています。 ------------------------------------------------------- #!/usr/bin/perl use strict; if(fork){  print("parent hello\n");  wait; }else{  print("child hello\n");  sleep 3;  print("child exit\n");  exit; } print("parent finish\n"); ------------------------------------------------------- モジュールを使うと楽です。 #!/usr/bin/perl use strict; use Parallel::ForkManager; # 並行処理は四つ my $pm = Parallel::ForkManager->new(4); my @id = (1 .. 10); for(@id){  # 子の処理  $pm->start and next;  print("this is $_\n");  sleep 2;  $pm->finish; } # 親はただ待つ $pm->wait_all_children; print("parent finish\n");

kumifeb227
質問者

お礼

おかげ様で解決いたしました。 ありがとうございました。

関連するQ&A