2012-09-05 26 views
0

我需要一個運行'A'的腳本並向它發送一個應該終止它的信號,我需要用不同的信號進行迭代,所以我基本上想要的是啓動一個可執行文件並在運行時發送信號

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

我的問題是,在我已經像一個循環:

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

所以使用腳本像

./A arguments 
kill -s QUIT A'sPid 

將不起作用,因爲顯然它在A結束之前不會到達殺線,並且它不會沒有信號或用戶輸入。

你能給我任何提示嗎?謝謝,對不起,如果這是一個平庸的問題,但我剛開始學習這些東西。

回答

2

您需要將A實例置於後臺(請參閱this),以便在運行時可以執行其他操作,即使用kill發送信號。

背景的過程把一個&末,即:

./A arguments & 

一旦後臺進程啓動腳本將移動到下一個命令。

2
SIGNAL=yourSignal 
while [ condition ] ; do 
    ./a.out & 
    PID=$! 
    kill -s $SIGNAL $PID 
done 
+0

kill要求應該發送信號的進程的PID。在'bash'中,最後一個後臺進程的PID可以通過變量'$!'獲得。 –

+0

@AnsgarWiechers哦是啊..呃:) – jsj

相關問題