【发布时间】:2017-04-10 02:54:50
【问题描述】:
我加入了<error.h>。
#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;
}
【问题讨论】:
-
你知道
error是一个函数吗? -
一般情况下,请不要在代码中包含行号——这会使复制和编译变得困难。如果您在行号中包含编译器错误消息,最好指出代码中的哪一行属于哪个错误,但是您在此处没有收到错误消息。
-
对不起,我写的是
error == EINTR,应该是'errorno == EINTR' -
@Wonter Er,我很确定应该是
errno。