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

我在阅读别人代码的时候,看到了这两句话:
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

阅读 3.9k
1 个回答

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题