多个进程报告收到的信号

多个进程报告收到的信号

如果我program &在一个终端中运行多个程序,然后从另一个终端开始发送SIGKILL SIGINT或任何其他信号,运行所有进程的终端会告诉我哪个进程收到了什么信号吗?

答案1

终端不知道发送到此类进程的信号,因此不会告诉您任何信息。但是如果您的 shell 有作业控制,它可以告诉您后台作业何时终止(例如由于信号)。例如,对于 bash 和 zsh,您需要设置选项notify,以便立即获得此类报告(而不是等待下一个提示)。

您还可以设置 SIGCHLD 陷阱,该陷阱在后台作业终止时执行(但您无法通过该陷阱获取有关已终止作业的任何信息)。

在 POSIX shell 中,您还可以用来wait $pid获取某些 PID 的退出状态$pid(这将给您信号,可能会出现误报和漏报,具体取决于进程的行为),但有一些限制。请参阅wait规格了解更多信息。

相关内容