谁能告诉我ctrl+ z和ctrl+ 之间的区别c?
当我在终端机中时,这两种组合都会停止当前过程,但是两者之间到底有什么区别?
谁能告诉我ctrl+ z和ctrl+ 之间的区别c?
当我在终端机中时,这两种组合都会停止当前过程,但是两者之间到底有什么区别?
Answers:
如果我们将边缘情况留在一侧,则区别很简单。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
此外,我们可以从状态列中的T看到该进程已停止。因此它仍然存在,但是没有运行...可以恢复。
如果某些应用程序具有正在进行的外部进程(例如Web请求),这些应用程序在睡眠时可能会超时,则它们将崩溃。
bg
(而不是fg
)以取消挂起Ctrl + Z的应用程序而不将其放回前台。可以有效地控制启动应用程序的外壳和应用程序本身,就像&
启动应用程序时一样。当您忘记以&
:: 开头时,这通常会派上用场
fg
再次输入以返回该过程!
ctrl c
或操作后如何知道哪个进程组必须返回到前台ctrl z
?它默认为SID(bash)吗?
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用于杀死带有信号的进程,SIGINT
换句话说,这是礼貌的杀死。
Ctrl+ Z 用于通过向其发送信号SIGTSTP
(例如休眠信号)来暂停该过程,该信号可以撤消,并且可以重新开始该过程。
但是,当一个进程被挂起时,我们可以通过fg
(在前台恢复)和bg
(在后台恢复)再次恢复它,但是我无法恢复被终止的进程,这是使用Ctrl+ C&Ctrl+ 的区别Z。
我们如何查看暂停的流程?
该jobs
命令给出如下输出:
[1]- Stopped cat
[2]+ Stopped vi
如何在后台杀死暂停的进程?
通过使用kill
命令:
kill %n
n
该jobs
命令显示的数字在哪里。所以,如果我想杀死猫:kill %1
。
这应该有帮助
Ctrl+ Z用于通过向其发送信号SIGSTOP来挂起进程,该信号无法被程序拦截。而Ctrl+ C用于杀死带有SIGINT信号的进程,并且可以被程序拦截,因此它可以在退出之前清理自身或完全退出。
SIGTSTP
,可以被程序捕获。有四种不同的信号,它可以中断程序SIGSTOP
,SIGTSTP
,SIGTTIN
,SIGTTOU
。其中只有SIGSTOP
不能被阻止。终端使用其他三个在不同条件下停止该过程。