本质上发生的事情是我正在有限的指令集框架上运行(以在嵌入式设备上运行)。这个想法很简单。
我称一个脚本,它包含两个文件:
文件A的内容:
#!/bin/sh
sh background_while&
文件B的内容:
#!/bin/sh
while true
do
#some commands
sleep 5
done
我想终止在后台调用的此过程。有人可以显示使用键盘中断如何最好地做到这一点吗?
最佳答案
如果在调用scriptB作为后台之后scriptA刚结束,那么您将无法继续等待键盘中断。因此,除了立即结束scriptA之外,您还可以使用紧闭循环并等待信号,然后使用trap
终止后台进程。
就像是:
脚本
#!/bin/bash
function kill_background(){
kill ${myPid}
}
trap kill_background SIGINT
bash ./scriptB.sh &
myPid=$!
wait
您的scriptB将是相同的。
$!
获取最后执行的命令的pid(您的scriptB),而wait
使scriptA等待所有后台进程返回。 trap
将捕获中断信号并杀死您的scriptB。