是否建议在bash脚本中捕获SIGPIPE?

时间:2010-01-25 09:10:06

标签: c++ c linux bash

使用system call命令从C ++执行bash脚本时遇到问题。 该脚本捕获SIGPIPE信号并退出,返回码为141

此问题已开始仅出现在我的代码的最后一个版本中。

我的问题如下:

  1. 为什么这个SIGPIPE现在发生并且之前没有发生?
  2. 忽略SIGPIPE是否安全?后果是什么?

2 个答案:

答案 0 :(得分:3)

1)如果不确切知道你改变了什么,那就很难回答 2)如果一个命令序列出现在管道中,并且其中一个读取命令在写入器完成之前完成,则写入器接收SIGPIPE信号。因此,您是否可以忽略它取决于您的脚本是否可接受的行为。更多信息here

答案 1 :(得分:2)

PiedPiper 链接到州的current version of the FAQ

  

从bash-3.1开始,bash默认不报告SIGPIPE错误。您   可以构建一个报告此类错误的bash版本。

您是否可能更改了Bash版本或其构建方式并导致代码中的行为发生变化?