答案1
Control+Z用于暂停向进程发送信号SIGTSTP
,该信号无法被程序拦截。而Control+C用于杀一个具有信号的进程SIGINT
,并且可以被程序拦截,以便它可以在退出之前清理自身,或者根本不退出。
如果你暂停一个进程,那么 shell 中会显示以下信息告诉你该进程已被暂停:
[1]+ Stopped yes
但是,如果您终止一个进程,除了返回到 shell 提示符外,您不会看到任何确认信息。暂停进程时,您还可以用它做一些有趣的事情。例如,运行以下命令:
fg
暂停程序将会使其回到前台。
并运行命令
bg
暂停程序将允许其在后台运行(但程序的输出仍然会发送到 TTY)。
如果你想终止一个暂停的程序,你不必先将它带回来fg
,你可以简单地执行以下命令:
kill %1
如果有多个暂停的命令,则运行
jobs
将列出它们,如下所示:
[1]- Stopped pianobar
[2]+ Stopped yes
使用%#
,其中#
是作业编号(输出中方括号内的作业编号jobs
)以及bg
、fg
、 或kill
,可用于对该作业执行操作。
答案2
- http://en.wikipedia.org/wiki/SIGSTOP
- http://en.wikipedia.org/wiki/SIGTSTP
- http://en.wikipedia.org/wiki/SIGINT_(POSIX)
Ctrl+Z 使用 SIGTSTP 暂停进程,您可以稍后恢复它。Ctrl+C 使用 SIGINT 终止进程,除非目标处理/忽略该进程,否则它会终止进程,因此您无法恢复它。还有一个 SIGSTOP 可以由目标发送,kill()
并且进程无法拦截。SIGCONT 是 SIGSTOP 和 SIGTSTP 的对应项,用于取消暂停进程。
答案3
CTRL+Z 停止(暂停)作业
CTRL+C 终止作业
使用 CTRL+C 无法恢复该过程,但使用 CTRL+Z 只需在命令提示符下输入即可恢复该作业:
fg %1
如果你有多个进程暂停,那么你应该这样做
jobs
查看输出并选择适当的数字来恢复例如
fg %3
恢复列表中的第三个作业。您还可以使用
bg %n
其中 n 是作业编号。
答案4
CTRL+Z停止(暂停)作业
CTRL+C终止工作
使用CTRL+C无法恢复该过程,但使用CTRL+Z只需在命令提示符下输入即可恢复该作业:
功能 %1
如果你有多个进程暂停,那么你应该这样做
工作
查看输出。