我在阅读别人代码的时候,看到了这两句话:
可能需要完整的代码,我贴一下。下面是完整的代码:
#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;
}
那么问题来了:这里的可读和可写指的是权限?还是指原来没有数据可以读,现在有数据可读的意思?
书中的运行结果如下:
可读的意思是现在缓冲区有数据,你可以调用 read 系统调用来读取这些数据。
可写的意思是现在缓冲区有空闲,你可以使用 write 系统调用写一些东西