如何处理前台进程中的信号?

如何处理前台进程中的信号?

我很疑惑,为什么我们不能使用kill -s 9 <pid>kill -s 15 <pid>杀死前台进程?当我尝试执行相同操作时,得到的结果是进程 ID 不存在,而当我使用上述命令在后台杀死该程序时,操作却正常。

root@onXXXX:~/Documents/Testing_Scripts/NEW_Scrits# sh infinite.sh 20
My process id is 23873 
Counting 20 
Counting 19 
kCounting 18 
ill Counting 17 
-s Counting 16 
15Counting 15 
 Counting 14 
23Counting 13 
8Counting 12 
73Counting 11 

Counting 10 
Counting 9 
Counting 8 
Counting 7 
Counting 6 
Counting 5 
Counting 4 
Counting 3 
Counting 2 
Counting 1 
root@onxXXXX:~/Documents/Testing_Scripts/NEW_Scrits# kill -s 15 23873
-bash: kill: (23873) - No such process

答案1

从我看到的输出来看,您的 shell 脚本已关闭,然后您正试图终止它。您无法终止不存在的进程...

同时,您不能在有另一个程序在前台运行的 shell 中运行某个程序/命令。

所以这里实际发生的事情是,你运行你的脚本,等到它的工作完成,现在 shell 可以自由地运行其他程序,现在你正试图终止已经完成的进程。同时,当你在后台发送一个进程时,你就能够使用 shell 并且在它仍在运行时成功终止该进程。

相关内容