2012-09-13 12:51:29 +0000 2012-09-13 12:51:29 +0000
88
88

CTRL+Z对unix/Linux应用程序有什么影响?

我很好奇也很困惑,ctrl+z到底是什么行为?

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

但是具体会发生什么。

它是继续做它的工作,还是被暂停,然后停在原来的位置。

如果它在那个点上被停止了,那么后台工作的意义是什么。

答案 (4)

74
74
74
2012-09-13 12:57:13 +0000

“后台作业 "只是一个不与用户交互的作业–它不控制tty,只做自己的事情(一般是默默地)。前台作业则恰恰相反,它掌握着tty的控制权,与用户进行交互。

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

58
58
58
2012-09-13 12:57:09 +0000

按Ctrl+Z发送 TSTP 信号给你的进程。这将停止执行(内核不会再安排任何CPU时间给进程),进程正在等待CONT继续处理。

你可以通过kill -TSTPkill -CONT来模拟/复制这个功能(因为kill会向你的进程发送一个指定的信号,尽管名字是这样的!)

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

更多信息请参见 这里

15
15
15
2012-09-13 13:02:52 +0000

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

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

当你按下Ctrl+Z时,计算将被暂停。你可以选择使用fg在前台恢复计算,或者使用bg在后台恢复计算。后者或多或少相当于执行。

echo 2^10000000 | bc -lq | wc -c &
9
9
9
2012-09-13 12:57:30 +0000

当按ctrl+z键时,一个进程被暂停和停止。使用fg可以将暂停的工作移到前台,使用bg可以在后台运行。

更多信息请参见 http://linuxreviews.org/beginner/jobs/