pjk*_*pjk 9 process jobs background-process
我要做的是:
sleep 5
Run Code Online (Sandbox Code Playgroud)
并立即CTRL-Z所以当我打开时,jobs
我看到:
[1]+ Stopped sleep 5
Run Code Online (Sandbox Code Playgroud)
接下来,当我执行fg %1
sleep 过程不再运行时,它已完成,这意味着它在运行 5(也许 4?)秒的同时运行Stopped
。为什么?
该实用程序xnanosleep()
调用又调用 Linux 内核nanosleep()
系统调用。无论应用程序处于运行/停止状态如何,它都可以工作,但是当应用程序停止时,它无法退出,这意味着当您取消暂停它时,它会退出。
https://linux.die.net/man/2/nanosleep
至于Ctrl+Z它发送一个键盘停止信号,该信号可以被应用程序拦截,但在这种情况下,它不会完成,因为nanosleep()
无论如何,再次都会起作用。
/usr/include/bits/signum-arch.h
#define SIGSTOP 19 /* Stop, unblockable. */
#define SIGTSTP 20 /* Keyboard stop. */
Run Code Online (Sandbox Code Playgroud)