2016-07-09 3 views
0

魚を背景にした実行されたプロセス(open "foo"など)に対してwaitの一般的な方法がありますか?私が知る限り、$!(bashで最後に実行された子プロセスのPID)は魚には存在しないので、ただwait $!にすることはできません。プログラムを開き、それを待ってから

+1

「IF_OK_CMD」はどういう意味ですか? 「オープン」(つまり、どのOS)ですか?なぜあなたがバックグラウンドに置かないときにプロセスを 'fg'したいのか、私は混乱しています。デフォルトでは、プロセスはフォアグラウンドで実行されます。 「開かれた」というのは、ちょうど終了している可能性はありますか? –

+0

私はそれを明確にするために編集します。 –

+2

編集していただきありがとうございます。私は起こっていることが起こっていると思っています。「オープン」はちょうど終了しています。バックグラウンドではなく、ファイルを開くだけで終了します。これがOS Xの場合は、おそらく 'open -W'が必要でしょうか? –

答えて

3

1)魚のイディオムは、cmd1; and cmd2またはif cmd1; cmd2; endです。

2)open ARGを実行すると、bashとzshもブロックされません。これは、openが実行されているプログラムのバックグラウンドが通常openであるためです。シェルは、openが "本当の"プログラムをバックグラウンドに置いているという考えを持っていません。その動作の別の例は、vim -gによってGUIモードでvimを起動することです。 macOSに-Wフラグを追加するか、またはLinuxの場合は-wをopenコマンドに追加し、-fをvimコマンドに追加します。

openのキーは、バックグラウンドであっても、開かれたプロセスに何かが起きるまで、魚がandオペレータを評価するために使用する信号を返さないということです。だからあなたはあなたが探している行動を得る。

関連する問題