如果我program &
在一个终端中运行多个程序,然后从另一个终端开始发送SIGKILL
SIGINT
或任何其他信号,运行所有进程的终端会告诉我哪个进程收到了什么信号吗?
答案1
终端不知道发送到此类进程的信号,因此不会告诉您任何信息。但是如果您的 shell 有作业控制,它可以告诉您后台作业何时终止(例如由于信号)。例如,对于 bash 和 zsh,您需要设置选项notify
,以便立即获得此类报告(而不是等待下一个提示)。
您还可以设置 SIGCHLD 陷阱,该陷阱在后台作业终止时执行(但您无法通过该陷阱获取有关已终止作业的任何信息)。
在 POSIX shell 中,您还可以用来wait $pid
获取某些 PID 的退出状态$pid
(这将给您信号,可能会出现误报和漏报,具体取决于进程的行为),但有一些限制。请参阅wait
规格了解更多信息。