2017-09-12 4 views
0

子プロセスをバックグラウンドプロセスとして呼び出す親シェルがあります。 子シェルでは、親にexitを送信しますが、親プロセスで子のステータスを取得する必要があります。私は同じために "ジョブ"コマンドを使用しています。私は子供の実行状況をキャプチャすることができますが、私は親で完了ステータスを取得しません。unix AIX - 親シェルスクリプト内の子バックグラウンドプロセスの状態を取得します。

#!/bin/ksh 
date 
./sleep.com& 
echo $? 
echo $! 
pid=$! 
echo $pid 
jobs $pid 
wait $pid 
jobs $pid 
echo $pid 

子シェル(sleep.com-バックグラウンド・プロセス):execution-

September 11, 2017 at 07:58:17 PM 
0 
12517444 
12517444 
[1] + Running     <command unknown> 
./parent.com[10]: jobs: no such job 
12517444 

#!/bin/ksh 
sleep 8 
exit 10 

出力

親シェル - コードと出力の下に見つけてください

jobs通信のステータスを取得してください子供の完成を記入してください。私の場合は

私はエラーを取得する:

./parent.com[10]: jobs: no such job

おかげ&よろしく

ヒマンシュアグラワル。

答えて

0

wait -nをお試しください:

#!/bin/ksh 
set -v 
date 
./sleep.com& 
echo $? 
pid=$! 
echo $pid 
wait -n $pid 
child_exit=$? 
printf 'child exited with code %d\n' "$child_exit" 
+0

感謝Lorinczy。それは私に変数内の子プロセスの出力を与えます。私は待っているコマンドを削除する必要があります。つまり、子プロセスがバックグラウンドにあることを意味します。それでも、子プロセスのステータスを取得できるはずです。私は仕事のコマンドを使って同じことをすることができたと主張しましたが、私がシェルで使用すると、プロセスの完了後に「そういうプロセスはありません」と言います。提案してください。 –

+0

シグナルをサポートしている実際のプログラミング言語を使用することができます。子プロセスが終了するとSIGCHILDシグナルが返されます。 –

関連する問題