启动可执行文件并在运行时向其发送信号

时间:2012-09-05 23:54:47

标签: bash signals

我需要一个运行'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结束后才到达终止线,并且没有信号或用户输入也不会。

你能给我任何暗示吗?谢谢,对不起,如果这是一个平庸的问题,但我刚刚开始学习这些东西。

2 个答案:

答案 0 :(得分:2)

您需要将A实例放入后台(请参阅this),以便在运行时您可以执行其他操作,即使用kill向其发送信号。

后台进程将&放在最后,即:

./A arguments &

启动后台进程后,脚本将继续执行下一个命令。

答案 1 :(得分:2)

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