基本上发生的事情是我在有限的指令集框架上运行(在嵌入式设备上运行)。这个想法非常简单。
我调用一个生成两个文件的脚本:
文件A的内容:
#!/bin/sh
sh background_while&
文件B的内容:
#!/bin/sh
while true
do
#some commands
sleep 5
done
我想终止在后台调用的这个过程。有人能说明如何使用键盘中断做到最好吗?
答案 0 :(得分:0)
如果scriptA在调用scriptB作为后台后结束,则无法继续等待键盘中断。因此,不是立即结束scriptA,而是可以使用紧密循环并等待信号,然后使用trap
终止后台进程。
类似的东西:
<强> SCRIPTA 强>
#!/bin/bash
function kill_background(){
kill ${myPid}
}
trap kill_background SIGINT
bash ./scriptB.sh &
myPid=$!
wait
您的scriptB将是相同的。 $!
获取最后执行的命令(您的scriptB)的pid,wait
使scriptA等待所有后台进程返回。 trap
会捕获中断信号并终止你的脚本B.