Control+Z是用来中止一个进程,向它发送信号SIGSTOP
来中止一个进程,它不能被程序拦截。而Control+C是用来杀死一个进程的信号SIGINT
,可以被程序拦截,这样它可以在退出前自行清理,或者根本不退出。
如果你暂停一个进程,会在shell中显示出这个信息,告诉你它已经被暂停了:
[1]+ Stopped yes
但是,如果你杀死一个进程,除了被掉回shell提示外,你不会看到任何确认。当你暂停一个进程,你也可以对它做一些花哨的事情。
如果你想杀死一个被暂停的程序,不需要先用fg
把它带回来,只需执行以下命令:
fg
如果你有多个被暂停的命令,运行
bg
会列出它们,就像这样。
kill %1
%#
使用#
,其中jobs
是作业号(bg
输出的方括号),用fg
、kill
或&007,就可以对该作业进行操作。
Ctrl+Z 暂停SIGTSTP进程,你可以稍后恢复。Ctrl+C会用SIGINT杀死该进程,除非目标处理/忽略了该进程,否则就会终止该进程,所以你不能恢复它。还有一个SIGSTOP,可以通过kill()
发送,进程无法拦截。SIGCONT是SIGSTOP和SIGTSTP的反义词,它可以解除进程的中断。
Cntrl + Z pause the currently running process.
和
Cntrl + C simply terminates the running process.
***_使用Cntrl + C不能恢复进程,而使用Cntrl + Z可以恢复进程。