shell如何识别其某个作业的SIGINT

shell如何识别其某个作业的SIGINT,shell,signals,Shell,Signals,如果我们从shell启动一个前台进程,并使用ctrl-c向它传递一个它不处理的SIGINT,因此退出,那么shell如何知道该进程是否被SIGINT终止。我的假设是,进程不会通过调用exit进入僵尸状态 谢谢一个不处理信号的应用程序实际上执行了一个默认处理程序(在SIGINT的情况下,它会终止应用程序)。向应用程序发送信号和调用处理程序(无论是默认的还是由应用程序设置的)都是由操作系统处理的,因此操作系统可以在某个地方注意到哪个信号导致应用程序停止,例如相应地设置退出代码。shell只显示退出代

如果我们从shell启动一个前台进程,并使用ctrl-c向它传递一个它不处理的SIGINT,因此退出,那么shell如何知道该进程是否被SIGINT终止。我的假设是,进程不会通过调用exit进入僵尸状态


谢谢

一个不处理信号的应用程序实际上执行了一个默认处理程序(在
SIGINT
的情况下,它会终止应用程序)。向应用程序发送信号和调用处理程序(无论是默认的还是由应用程序设置的)都是由操作系统处理的,因此操作系统可以在某个地方注意到哪个信号导致应用程序停止,例如相应地设置退出代码。shell只显示退出代码,但设置它的是操作系统。

一个不处理信号的应用程序实际上执行一个默认处理程序(在
SIGINT
的情况下,它会终止应用程序)。向应用程序发送信号和调用处理程序(无论是默认的还是由应用程序设置的)都是由操作系统处理的,因此操作系统可以在某个地方注意到哪个信号导致应用程序停止,例如相应地设置退出代码。shell仅显示退出代码,但由操作系统设置。

shell使用
等待(2)
系列中的函数等待终止/终止子进程,并检索终止子进程的信号(如果有)。

shell使用
等待(2)中的函数
family等待终止/终止子进程,并检索终止子进程的信号(如果有的话)。

但是这里的进程没有退出调用exit(),所以wait方法不会返回任何东西。是的,它会,读一下:但是这里的进程没有退出调用exit(),所以wait方法不会返回任何东西。是的,它会,请阅读以下内容: