題 CTRL + Z對unix \ Linux應用程序的影響是什麼


我很好奇並且混淆了CTRl + Z的行為究竟是什麼。

我知道,如果一個進程在前台運行,我們按ctrl + z,它會轉到後台。

但究竟發生了什麼。

它是繼續做它的工作,還是它被暫停,並停止在它的位置。

如果它在那時停止了,那背景工作的含義是什麼。


72
2017-09-13 12:51


起源


Ctrl-Z不會將進程發送到後台,它會掛起它。 - Wooble


答案:


“後台工作”只是一個不與用戶交互的工作 - 它不控制tty,它只是做它的事情(通常是默默地)。前台作業是相反的,它控制tty以與用戶交互。

Control-Z暫停最近的前台進程(與tty交互的最後一個進程)(除非該進程採取步驟忽略暫停,就像shell通常那樣)。這通常會將您帶回到shell,您通常可以從中輸入命令 bg 將剛剛暫停的進程移動到後台(讓它繼續運行)或 fg 把它帶回前台。


57
2017-09-13 12:57



撤消後台進程 fg 首先通過發布來識別哪個工作 jobs   然後說出它的%1然後發出 fb %1  並且過程將恢復 - Scott Stensland


按Ctrl + Z發送 TSTP 向你的過程發出信號。這將暫停執行(內核不會為進程安排更多的CPU時間),並且進程正在等待CONT繼續處理。

您可以通過模擬/複製此操作 kill -TSTP 和 kill -CONT (以來 kill 儘管有名字,我們會向您的流程發送一個指定的信號!)

shell具有“後台”進程的功能,但這是shell和進程之間的關係。該過程本身並不具有“背景”或“前景”的概念。

看到 這裡 了解更多信息。


48
2017-09-13 12:57



^Z 發送SIGTSTP,而不是SIGSTOP - William Pursell
@WilliamPursell - 啊!指出。現在改變了。謝謝 - Brian Agnew
這一切都與信號規則有關。謝謝。 - g10guang


考慮這個命令,需要大約。我的筆記本電腦上4.5秒:

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

當你按下 按Ctrl+ž,計算將被暫停。您可以選擇使用前台恢復計算 fg,或使用後台恢復它 bg。後者或多或少等同於執行:

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

14
2017-09-13 13:02





按ctrl + z時,進程暫停並停止。使用fg,您可以將暫停的作業移動到前台,使用bg可以在後台運行它。

看到 http://linuxreviews.org/beginner/jobs/ 欲獲得更多信息。


8
2017-09-13 12:57