はじめまして、初心者の質問で恐縮ですが、以下の点を教えて欲しいです。
IIS7.0のWebサーバで、CGIプログラムをPerlで作っているのですが、forkした子プロセス
で時間のかかるバックグラウンド処理を行って、親プロセスでWebブラウザに返す処理を
しようとしていますがうまくいきません。重たい処理が終了するまでWebブラウザに応答
されません。(子プロセスの終了が終わるまで、親プロセスのHTML表示処理がWebブラ
ウザに返答されません)通常、子プロセスでclose(STDOUT)で親プロセスのHTMLの
表示処理が出来ると思っていますが。。。
どのようにすれば良いか教えてもらえると幸いです。以下は参考のプログラムです。
よろしくお願いします。
$|=0;
if ( $pid = fork){ #親プロセス
&disp_html(); #HTMLを表示させるプログラム
wait;
}elsif (defined $pid) { #子プロセス
close(STDIN);
close(STDOUT);
close(STDERR);
&heaby_prog(); #重たい時間のかかる処理
exit 0;
} else {
die "Can't fork: $\n";
}
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
やっぱりwaitを外すのが手っ取りばやいように思えます。
それでだめなら、forkする前にstd*をクローズするとか。
回答ありがとうごいました。
ただ、waitをはずしたり、systemコマンド、別ファイルにPerlを
分けてバックグラウンドで実行したり、いろいろやってみましたが、
うまくいきませんでした。
IISでは、Perlで時間のかかる処理のバックグラウンドの実行で
やり方があれば教えて欲しいです。。。
ちょっと、Javascriptなどの方法を模索してみようかと思っています。
No.1
- 回答日時:
回答ありがとうございます。
wait;
は子プロセスの終了を親プロセスが待っていて、
このプログラム上は問題ないと思っています。
(実施したいことは出来ると思っています)
waitで待っていても、子プロセスでclose(STDOUT)
で、HTMLは出力できたと思っていましたが。。。。
意味が違ってたら、すみません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(学校・勉強) この中で間違ってある説明はありますか?詳しい方に教えていただきたいです。 A. 1つのプログラムが複 2 2023/07/14 01:15
- C言語・C++・C# プログラミングの問題です。至急教えてください。 /***から***/の部分をプログラミングにしてほし 1 2022/10/13 11:48
- 政治 私は文部科学省ヘ入り込んで投稿した私の建議文を彼らが私の依頼まましましょうか。? 2 2023/08/22 07:08
- フリーソフト AOMEI Backupper でバックアップが取れない 2 2022/07/17 22:28
- Visual Basic(VBA) バックグラウンドのプロセスのエクセルを閉じる方法 4 2022/05/12 15:39
- 日本株 SBI証券HYPER SBI 2のエラー 1 2023/01/31 13:38
- Windows 10 バッチファイルでのエクスプローラー終了 1 2022/05/30 14:32
- その他(コンピューター・テクノロジー) Texについてです。 jpgファイルを貼り付けても表示されないのですが、どうしたら表示できますか? 1 2022/06/30 23:42
- 情報処理技術者・Microsoft認定資格 応用情報処理技術者試験のシステム利用率の計算について 2 2022/03/28 07:43
- 医学 医学に詳しい方にお尋ね致します。 摂取した水分は最終的には尿になりますが、そのプロセスがよく分かりま 4 2023/01/16 14:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perlでファイルの末尾から指定...
-
#!/usr/bin/perlで書きだしたCG...
-
Perlのエラーについてご教授く...
-
perlのflock関数でロックをかけ...
-
Perlで時間の計算
-
perlについて
-
perlのrequireの動き方について...
-
perlについての質問
-
perlをバージョンアップしたら...
-
perl このテキストファイルを簡...
-
Perlで特定文字列から特定文字...
-
秀丸での一括変換について
-
ターミナルで特定の文字と文字...
-
英数文字列のうちの数値を4桁に...
-
Perl 数値にスラッシュを入れる...
-
vlookupがうまくいきません、教...
-
Perlでsprintf("%02d",$month)...
-
アルファベットに付いて質問し...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB6で、長い時間かかる処理...
-
C言語のflagの使い方が分かりま...
-
VBAのCallステートメントについて
-
実行中の変数の中身をイミディ...
-
処理終了後、他のページへジャ...
-
初回起動のみ判別したい
-
回数を指定しないで空白行まで...
-
問題作成のWebアプリの作り方を...
-
UWSC SLCTBOXもしくはSELECTに...
-
フラグをたてる、、の意味を教...
-
perl:ループのカウンタ変数の値...
-
夕方くらいから急にGoogle検索...
-
バッファリング処理を高速化し...
-
Application.ScreenUpdating = ...
-
JSONで文字列が長い時
-
どちのほうがすきですか?
-
formで特定のinputを送信しない...
-
文字の横にプルダウンを表示さ...
-
16進の10進変換について
-
実行時エラー 3020の対策
おすすめ情報