0
Iは<error.h>
を含む。なぜ 'EINTR'が宣言されていないのですか?
#include <error.h>
#include <unistd.h>
ssize_t rio_readn(int fd, void *buf, size_t n)
{
size_t nleft = n;
char *rbuf = buf;
while(nleft > 0)
{
int nread = read(fd, rbuf, nleft);
if(nread < 0)
{
if(error == EINTR)
nread = 0;
else
return -1;
}
else if(nread == 0)
break;
nleft -= nread;
rbuf += nread;
}
return n - nleft;
}
あなたは「エラー」は機能であると認識していますか? – Olaf
一般に、コードに行番号を含めないでください。コピーやコンパイルが難しくなります。行番号の付いたコンパイラエラーメッセージを含めると、コード内のどの行がどのエラーに属しているかを示すことができますが、ここにエラーメッセージがありません。 –
申し訳ありません、私は 'error == EINTR'と書くべきです、 'errorno == EINTR'でなければなりません。 – Wonter