CTRL + Z对unix \ Linux应用程序的影响是什么


83

我很好奇并且混淆了CTRl + Z的行为究竟是什么。

我知道,如果一个进程在前台运行,我们按ctrl + z,它会转到后台。

但究竟发生了什么。

它是继续做它的工作,还是它被暂停,并停止在它的位置。

如果它在那时停止了,那背景工作的意义是什么。


7
Ctrl-Z不会将进程发送到后台,它会挂起它。
Wooble

Answers:


68

“后台工作”只是一个不与用户交互的工作 - 它不控制tty,它只是做它的事情(通常是默默地)。前台作业相反,它控制tty与用户交互。

Control-Z暂停最近的前台进程(与tty交互的最后一个进程)(除非该进程采取步骤忽略暂停,就像shell通常那样)。这通常会将您带回shell,您通常可以从中输入命令bg将刚刚暂停的进程移动到后台(让它继续运行)或fg将其恢复到前台。


1
撤消后台进程,fg首先通过发布确定哪个职位,jobs 然后说出它的%1然后发布 fb %1 和处理将恢复
Scott Stensland 2017年

fg %1fb %1
ahonnecke

55

按Ctrl + Z会将TSTP信号发送到您的进程。这将暂停执行(内核不会为进程安排更多的CPU时间),并且进程正在等待CONT继续处理。

您可以模拟/通过复制这个kill -TSTPkill -CONT(因为kill会提名的信号发送到你的过程中,尽管名字!)

shell具有“后台”进程的功能,但这是shell和进程之间的关系。这个过程本身并没有“背景”或“前景”的概念。

有关详细信息,请参见此处


2
^Z发送SIGTSTP,而非SIGSTOP
威廉Pursell

@WilliamPursell - 啊!指出。现在改变了。Thx
Brian Agnew

15

考虑这个命令,需要大约。我的笔记本电脑上4.5秒:

echo 2^10000000 | bc -lq | wc -c

Ctrl+时Z,计算将暂停。您可以选择在前台使用恢复计算fg,或使用后台恢复计算bg。后者或多或少等同于执行:

echo 2^10000000 | bc -lq | wc -c &

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.