stdin 可读和stdout 可写具体是什么意思呢?

codinghuang
  • 142

我在阅读别人代码的时候,看到了这两句话:
clipboard.png

clipboard.png

可能需要完整的代码,我贴一下。下面是完整的代码:

#include <stdio.h>
#include <unistd.h>
#include <sys/poll.h>

#define TIMEOUT 5

int main(int argc, char const *argv[])
{
    struct pollfd fds[2];
    int ret;

    fds[0].fd = STDIN_FILENO;
    fds[0].events = POLLIN;

    fds[1].fd = STDOUT_FILENO;
    fds[1].events = POLLOUT;

    ret = poll(fds, 2, TIMEOUT * 1000);

    if (-1 == ret) {
        perror("poll");
        return 1;
    }
    if (!ret) {
        printf("%d 秒过去了\n", TIMEOUT);
        return 0;
    }
    if (fds[0].revents & POLLIN) {
        printf("stdin is readable\n");
    }
    if (fds[1].revents & POLLOUT) {
        printf("stdout is writeable\n");
    }

    return 0;
}

那么问题来了:这里的可读和可写指的是权限?还是指原来没有数据可以读,现在有数据可读的意思?

书中的运行结果如下:
clipboard.png

回复
阅读 3k
1 个回答

可读的意思是现在缓冲区有数据,你可以调用 read 系统调用来读取这些数据。

可写的意思是现在缓冲区有空闲,你可以使用 write 系统调用写一些东西

宣传栏