Oli*_*Oli 182
如果我们将边缘情况放在一边,区别很简单。Control+C几乎立即中止应用程序,而Control+ 将其Z分流到后台,暂停。
shell 会根据这些组合向底层应用程序发送不同的信号:
Control+ C(控制字符intr
)发送将中断应用程序的 SIGINT。通常会导致它中止,但这由应用程序决定。
Control+ Z(控制字符susp
)将 SIGTSTP 发送到前台应用程序,有效地将其置于后台,暂停。如果您需要摆脱编辑器之类的东西去获取一些您需要的数据,这将非常有用。您可以通过运行返回到应用程序中fg
(或者工作号%x
在哪里x
,如 所示jobs
)。
我们可以通过运行nano TEST
,然后按Control+Z然后运行来测试这一点ps aux | grep TEST
。这将向我们显示nano
进程仍在运行:
oli 3278 0.0 0.0 14492 3160 pts/4 T 13:59 0:00 nano TEST
Run Code Online (Sandbox Code Playgroud)
此外,我们可以看到(从状态列中的那个 T)进程已停止。所以它仍然活着,但它没有运行......它可以恢复。
如果某些应用程序有正在进行的外部进程(如 Web 请求),而这些进程可能会在它们休眠时超时,则它们会崩溃。
nux*_*nux 21
Ctrl+C用于杀死带有信号的进程,SIGINT
换句话说,它是一种礼貌的杀死。
Ctrl+Z 用于通过向进程发送信号来暂停进程SIGTSTP
,这类似于睡眠信号,可以撤消并且进程可以再次恢复。
但是,当一个进程被挂起时,我们可以通过fg
(resume in foreground) 和bg
(resume in background)再次恢复它,但我无法恢复被杀死的进程,这是使用Ctrl+ C& Ctrl+的区别Z。
我们如何查看挂起的进程?
该jobs
命令给出如下输出:
[1]- Stopped cat
[2]+ Stopped vi
Run Code Online (Sandbox Code Playgroud)
如何在后台杀死暂停的进程?
通过使用kill
命令:
kill %n
命令n
显示的数字在哪里jobs
。所以如果我想杀死猫:kill %1
.
Sle*_*aur 18
Control+Z挂起进程 ( SIGTSTP
) 和Control+C中断进程 ( SIGINT
)
http://en.wikipedia.org/wiki/Control-Z
在类 Unix 系统上,Control+Z 是挂起进程的键序列的最常见的默认键盘映射
http://en.wikipedia.org/wiki/Control-C
在 POSIX 系统中,该序列使活动程序接收 SIGINT 信号。如果程序没有指定如何处理这种情况,它就会被终止。通常,处理 SIGINT 的程序仍会自行终止,或者至少终止在其中运行的任务
简而言之:
CTRL-C请求程序中止。
CTRL-Z 挂起程序,它作为后台任务保持常驻。
暂停程序允许您稍后使用命令恢复它fg
。当您退出登录 shell 时,剩余的后台任务将被终止。
请注意CTRL-C仅请求程序中止,程序可能会忽略该请求。 CTRL-Z将挂起程序,除非程序特别覆盖请求。
当您按ctrl+时c,意味着您将 SIGINT 发送到您的进程。就像你输入这个命令:kill -SIGINT <your_pid>
。它会杀死你的进程。这就是为什么当发出ps命令时你看不到它。
当您按ctrl+时z,意味着您向进程发送了 SIGSTOP。就像你输入这个命令:kill -SIGKSTOP <your_pid>
。它会停止你的进程,但进程仍然存在。因此,您可以通过向进程发送 SIGCONT 来重新激活进程。
归档时间: |
|
查看次数: |
200773 次 |
最近记录: |