Рекомендуется перехватывать SIGPIPE в скрипте bash? - PullRequest
5 голосов
/ 25 января 2010

У меня проблема при выполнении сценария bash из C ++ с помощью команды системного вызова. Скрипт перехватывает сигнал SIGPIPE и завершается с кодом возврата 141.

Эта проблема начала появляться только в последней версии моего кода.

Мои вопросы:

  1. Почему этот SIGPIPE происходит сейчас, а не раньше?
  2. Безопасно ли игнорировать SIGPIPE и каковы последствия?

Ответы [ 2 ]

3 голосов
/ 25 января 2010

1) Очень сложно ответить, не зная точно, что вы изменили.
2) Если в конвейере появляется последовательность команд, и одна из команд чтения завершается до того, как завершает запись, пишущий получает сигнал SIGPIPE. То, можете ли вы проигнорировать это, зависит от того, является ли это приемлемым поведением для вашего сценария. Подробнее здесь

2 голосов
/ 25 января 2010

A текущая версия FAQ , которая PiedPiper связана с состояниями:

Начиная с bash-3.1, bash по умолчанию не сообщает об ошибках SIGPIPE. Вы может создать версию bash, которая будет сообщать о таких ошибках.

Возможно ли, что вы изменили версии Bash или способ его сборки, и это привело к изменению поведения в вашем коде?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...