単純なPHPスクリプトがあります
<?php
for($i=0;$i<10;$i++){
sleep(1);
echo $i;
}
コマンドラインから実行します。
php myfile.php &
スクリプトが終わる前にも、コマンドラインで他の操作を実行できたらと思います。
プロンプトが表示されますが、Enterキーを押すと
[1]+ Stopped php myfile.php
ベストアンサー1
これは、端末でこのオプションが有効になっていると予想される現象ですtostop
。一度設定すると、端末に出力しようとするすべてのバックグラウンドプロセスは、SIGTTOU
基本ハンドラがプロセスを停止する信号です。 (これは、バックグラウンドプロセスの出力によって端末が複雑にならないようにするためのものです。)
stty -tostop
同じ端末で実行してこの機能を無効にすることができます。
現状:
$ stty tostop
$ php ./t.php &
[1] 6484
$
[1]+ Stopped php ./t.php
$ # no messing up of the terminal, process stopped
$ fg
php ./t.php
0^C
$
この機能を無効にします。
$ stty -tostop
$ php ./t.php &
[1] 6481
$ # 01an2d 3now 45 6it m7esses 8up 9my term!