首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SIGPIPE的原因

SIGPIPE的原因
EN

Stack Overflow用户
提问于 2009-12-31 05:15:55
回答 2查看 1.9K关注 0票数 4

我有一个在Linux上运行的应用程序,它捕获信号并将它们报告给syslog。

此应用程序经常报告没有明显原因的SIGPIPE事件

应用程序作为守护进程在后台运行。这些信号发生在没有明显网络/套接字连接的空闲时间。应用程序经常读取和写入磁盘和DVB卡(通过内核DVB驱动程序)。

我想找出SIGPIPE的原因。有追踪信号源的方法吗?

编辑:我已经将以下代码添加到代码中:

代码语言:javascript
复制
 stdin  = freopen("/dev/null", "r", stdin);
 stdout = freopen("/tmp/vdr_stdout", "w", stdout);
 stderr = freopen("/tmp/vdr_stderr", "w", stderr);

仍然可以获得SIGPIPE。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-12-31 05:22:58

在符合POSIX的平台上,SIGPIPE是当一个进程试图在没有连接到另一端的进程的情况下写入管道时发送给该进程的信号。

由于您引用的是daemon上下文,因此可能关闭了STD*,并尝试对其执行读/写操作。也许是一个调试/进度报告printf

票数 4
EN

Stack Overflow用户

发布于 2009-12-31 05:19:37

您的守护进程是否关闭输入和输出?:

代码语言:javascript
复制
fclose (stdin);
fclose (stdout);
fclose (stderr);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1982539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档