teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

間違えました

2015/02/26 03:21

投稿

moeru_gomi
moeru_gomi

スコア42

answer CHANGED
@@ -1,3 +1,33 @@
1
+ コメントにしようとして失敗しました。すいません。
2
+
3
+ > 時間のかかる処理をbackgroundで処理して、ブラウザ上は終了させたいのですが、うまく子プロセスが動いてくれません。Windowsだからでしょうか?
4
+
5
+ 先ず、Windowsには `fork` がないので
1
- ```lang-<ここに言語を入力>
6
+ ```lang-perl
7
+ my $pid = fork;
8
+ # forkが失敗した場合はエラー処理を行う
9
+ unless (defined $pid) {
10
+ die "fork faild.";
2
- コード
11
+ }
3
- ```
12
+ ```
13
+ は、恐らく無駄でしょう。
14
+
15
+ > [バックグラウンドでプロセスを起動するには?](http://perldoc.jp/docs/perl/5.14.1/perlfaq8.pod#How32do32I32start32a32process32in32the32background63)
16
+ 上記にある
17
+ ```lang-perl
18
+ system("cmd &")
19
+ ```
20
+ が、Windowsでは
21
+ ```lang-perl
22
+ system("start cmd")
23
+ ```
24
+ にあたります。
25
+
26
+ Windows環境が手元に無いので試せないので、試せないのが恐縮ですが
27
+ ```lang-perl
28
+ system("start", "perl C:/inetpub/wwwroot/data/script/test_001.pl");
29
+ ```
30
+ や `start` のオプションなどでなんとかならないでしょうか。
31
+
32
+ あとは、動かないと言うのがどういう風に動かないのかが気になります。
33
+ 動かないと仰っているのは、`test_001.pl` の実行結果を待ってしまうと言う事でしょうか?