0

'A'を実行し、それを終了するシグナルを送信するスクリプトが必要です。また、さまざまなシグナルでそれを繰り返す必要があるため、基本的に必要なのは

Launch A ->
send signal S to terminate A and check stuff ->
Relaunch A ->
send signal S1 ......

私の問題は、Aで次のようなループがあることです。

while(1){
    scanf()
    ...DO STUFF...
}

したがって、次のようなスクリプトを使用します

./A arguments
kill -s QUIT A'sPid

明らかに、Aが終了するまでキルラインに到達せず、シグナルまたはユーザー入力がないと機能しないため、機能しません。

ヒントを教えていただけますか?ありがとう、そしてそれが平凡な質問であるならば申し訳ありません、しかし私はちょうどこのことを学び始めました。

4

2 に答える 2

2

Aインスタンスをバックグラウンドに配置する必要があります(これを参照)。これにより、インスタンスの実行中に他のことを実行できます。つまり、を使用してシグナルを送信できますkill

プロセスをバックグラウンドにする&には、最後にを置きます。つまり、次のようになります。

./A arguments &

バックグラウンドプロセスが開始されると、スクリプトは次のコマンドに進みます。

于 2012-09-06T00:13:56.903 に答える
2
SIGNAL=yourSignal
while [ condition ] ; do
   ./a.out &
   PID=$!
   kill -s $SIGNAL $PID
done
于 2012-09-06T00:18:43.640 に答える