在bash中,当运行时( sleep 123 &)
,sleep 123
当子shell退出时,进程将继续运行。如何sleep 123
在其父子 shell 退出之前停止该进程?
我正在尝试查看该sleep 123
进程是否会因接收SIGHUP
和 而终止SIGCONT
。我正在寻找一个例子SIGHUP 是否发送到这个孤立进程,为什么它不终止?和默认情况下,内核是否会向成为孤立进程并包含已停止进程的进程组发送 SIGHUP 来终止所有进程?
答案1
这将显示您试图说明的行为:
(sleep 60 & kill -STOP $!)
这会sleep
进入后台,然后停止它。SIGHUP
当子 shell 退出时,它就会被杀死。
信号可以中断一些系统调用;看联机signal(7)
帮助页(特别是“信号处理程序中断系统调用和库函数”部分)。当调用信号处理程序时,特别使用的系统调用sleep
会被中断,这记录在sleep(3)
。