SIGPIPE的原因
问题描述:
我有一个在Linux上运行的应用程序,捕获信号并将它们报告给系统日志。SIGPIPE的原因
这个应用程序频繁地报道,没有明显的理由
该应用程序在后台运行SIGPIPE事件,守护进程。信号发生在空闲时间,没有明显的网络/套接字连接。应用程序经常从磁盘和DVB卡(通过内核DVB驱动程序)读取和写入数据。
我想找出SIGPIPE的原因。任何跟踪信号源的方法?
编辑: 我已经加入这个代码:
stdin = freopen("/dev/null", "r", stdin);
stdout = freopen("/tmp/vdr_stdout", "w", stdout);
stderr = freopen("/tmp/vdr_stderr", "w", stderr);
仍然得到SIGPIPEs。
答
请问您的守护进程密切的输入和输出?:
fclose (stdin);
fclose (stdout);
fclose (stderr);
+0
它没有。我刚刚发现有些用例会保持这些开放。初始化部分甚至有代码使用freopen()将stdin,stdout和stderr附加到新的控制终端。(我不使用它) – Bernd 2009-12-30 21:43:25
是我的回答满意吗? – jldupont 2010-01-05 15:55:45