man
私はページを読みましたが、write()
失敗してerrno
toEAGAIN
またはを設定すると、もう一度EINTR
実行する可能性があることを理解write()
しているので、次のコードを思いつきました。
ret = 0;
while(ret != count) {
write_count = write(connFD, (char *)buf + ret, count);
while (write_count < 0) {
switch(errno) {
case EINTR:
case EAGAIN:
write_count = write(connFD, (char *)buf + ret, count -ret);
break;
default:
printf("\n The value of ret is : %d\n", ret);
printf("\n The error number is : %d\n", errno);
ASSERT(0);
}
}
ret += write_count;
}
私はソケットで実行read()
し、上記と同様に処理しています。Linuxとコンパイラを使用しています。write()
read()
gcc