Я нашел этот фрагмент кода, используемый несколько раз (также аналогичный, где он используется open()
вместо write()
).Проверка, если errno! = EINTR: что это значит?
int c = write(fd, &v, sizeof(v));
if (c == -1 && errno != EINTR) {
perror("Write to output file");
exit(EXIT_FAILURE);
}
Почему это проверяется, если && errno != EINTR
здесь?
В поисках errno
на человека я нашел следующий текст о EINTR
, но даже если я посетил man 7 signal
, не просветить меня.
EINTR Прерывание вызова функции (POSIX.1); см. сигнал (7).
Вместо этого проверьте страницу руководства для 'write'. Он должен сказать вам, на что errno настроено на определенные ошибки. – Kevin
Обратите внимание, что 'write()' возвращает 'ssize_t' и ** NOT **' int'. Они не одинаковы. –
Спасибо вам всем! @AndrewHenle Я это знаю, я просто решил скопировать часть кода, как я ее нашел :) как вы думаете, я должен все время редактировать вопрос с 'ssize_t' вместо' int'? – Robb1