示例
使用 poll 函数监控标准输入,如果有输入,则获取标准输入的内容并打印
#include <stdio.h>
#include <stdlib.h>
#include <poll.h>
int main(void)
{
int ret,maxfd = 0;
struct pollfd pfds;
char buffer[64] = {0};
pfds.fd = 0;
pfds.events = POLLIN;
maxfd = pfds.fd;
for(;;){
ret = poll(&pfds,1,1000);
if (ret == -1){
perror("[ERROR] poll(): ");
exit(EXIT_FAILURE);
}else if (ret == 0){
printf("Timeout.\n");
}else if (ret > 0){
if (pfds.revents & POLLIN){ //判断返回的就绪事件是否为 POLLIN
fgets(buffer,sizeof(buffer),stdin); // 如果是 POLLIN,则表示有用户输入
printf("buffer : %s ",buffer);
}
}
}
return 0;
}
练习
使用 poll 监听有名管道,当有名管道有数据时,读取数据并打印