我们有一个用 C 语言为几个不同的 UNIX 平台编写的小型守护程序应用程序(这个问题发生在 SunOS 5.10 中),它基本上只是打开一个串行端口,然后侦听通过所述端口进入的信息。
在这个特定的实例中,守护进程似乎读取了通过串行端口发送的单个传输(如文件的数据),然后它接收到一个 SIGINT。每次都会发生这种情况。其他客户非常相似地使用此设置,但未收到 SIGINT。很明显,用户没有按 Ctrl-C。我们有一个相对简单的信号处理程序,所以我们肯定知道这就是正在发生的事情。
还有什么可能导致这种情况?谷歌搜索并查看这里的问题,我找不到关于可能导致 SIGINT 的其他事情的太多解释。我还查看了代码,发现没有调用 raise() 并且只有一个调用 kill(pid, 0) 无论如何都不会发送 SIGINT。
任何想法或见解肯定会受到赞赏。