我发现这段代码被多次使用(还有一段类似的代码,只是使用了open()
而不是write()
)。
int c = write(fd, &v, sizeof(v));
if (c == -1 && errno != EINTR) {
perror("Write to output file");
exit(EXIT_FAILURE);
}
为什么这里要检查 && errno != EINTR
?
在查找man页中的errno
时,我找到了关于EINTR
的以下文本,但即使我访问了man 7 signal
也不清楚。
EINTR:被信号中断的函数调用(POSIX.1);请参阅signal(7)。
write
命令的手册页。手册页会告诉你在特定错误时,errno的值应该是多少。 - Kevinwrite()
函数的返回值是ssize_t
类型,而不是int
类型。它们并不相同。 - Andrew Henlessize_t
替换int
吗? - Robb1