小编use*_*060的帖子

为什么以下打印'资源暂时不可用'?

为什么以下代码打印'read():资源暂时不可用'80%的时间?这是EAGAIN代码,它与WOULD BLOCK相同,这意味着没有数据等待读取,但是select返回1表示有数据(在Linux中测试):

#include <time.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/errno.h>

int main(int argc, char** argv)
{
    int fd = open("/dev/lp0", O_RDWR | O_NONBLOCK);
    int ret = 0;
    int status = 0;
    char buffer[1024];
    char teststr[] = "This is a test\n";
    char XMIT_STATUS_OFFLINE[] = {0x10,0x04,0x02};
    char XMIT_STATUS_ERROR[] = {0x10,0x04,0x03};
    char XMIT_STATUS_ROLL[] = {0x10,0x04,0x04};
    char XMIT_STATUS_SLIP[] = {0x10,0x04,0x05};
    fd_set rfds;
    FD_ZERO( &rfds );
    FD_SET( fd, &rfds );
    struct timeval sleep;
    sleep.tv_sec = 5;
    sleep.tv_usec …
Run Code Online (Sandbox Code Playgroud)

c linux file-io select-function

3
推荐指数
1
解决办法
7127
查看次数

标签 统计

c ×1

file-io ×1

linux ×1

select-function ×1