Как правило, «прерывается сигналом» (EINTR) относится к крайне нелепой обработке сигналов Unix System V, в результате чего системный вызов ANY может завершиться ошибкой, если ваш процесс получил (и обработал) сигнал во времясистемный вызов.Это требовало переноса каждого системного вызова на do ... while (ret==-1 && errno==EINTR);
или подобное.В то время как POSIX по-прежнему допускает либо это, либо хорошее («BSD») поведение, нормальные системы, такие как GNU / Linux, имеют поведение BSD по умолчанию.Вы всегда можете получить поведение BSD, вызвав sigaction
с правильными аргументами, или даже сделать для этого функцию-обертку.
Таким образом, EINTR не связан с SIGPIPE, вызванным ошибками записи.