Existe uma maneira mais limpa de usar a função write () de forma confiável?
Eu li oman
páginas, e meu entendimento é que, sewrite()
falha e define oerrno
paraEAGAIN
ouEINTR
, Eu posso executar owrite()
novamente, então eu criei o seguinte código:
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;
}
Estou realizandoread()
ewrite()
em soquetes e manuseio doread()
similarmente como acima. Eu estou usando o Linux, comgcc
compilador.