Closed. This question is off-topic. It is not currently accepting answers. Learn more
想改进这个问题吗?Update the question所以堆栈溢出的值小于aa>。
两年前关闭。
我包括<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;
}

最佳答案

您缺少EINTR的声明,因为<error.h><errno.h>没有关系,而EINTR是在这里声明的。错误变量是errno而不是error

关于c - 为什么未声明“EINTR”? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43314326/

10-16 20:47