如何在子 shell 退出之前停止子 shell 的子进程(根据 SIGSTOP)?

如何在子 shell 退出之前停止子 shell 的子进程(根据 SIGSTOP)?

在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)

相关内容