poll

来源:互联网 发布:知乎大学排名 编辑:程序博客网 时间:2024/05/04 13:07

#include<stdio.h>

#include<stdlib.h>

#include<unistd.h>

#include<sys/types.h>

#include<sys/stat.h>

#include<fcntl.h>

#include<poll.h>

int main(){

 

struct pollfd fds[3];

int i,rc;

char buf[80];

fds[0].fd=0;

fds[1].fd=open("pipe1",O_RDONLY|O_NONBLOCK);

fds[2].fd=open("pipe2",O_RDONLY|O_NONBLOCK);

for(i=0;i<3;++i)

fds[i].events=POLLIN;

while(fds[0].events||fds[1].events||fds[2].events){

poll(fds,3,-1);

for(i=0;i<3;i++){

if(fds[i].revents){

rc=read(fds[i].fd,buf,sizeof(buf)-1);

if(rc>0){

buf[rc]=0;

printf("read:%s",buf);

}

else if(rc==0){

close(fds[i].fd);

fds[i].events=0;

}else{

 

perror("read");

exit(EXIT_FAILURE);

}

}

}

 

}

exit(EXIT_SUCCESS);

}

原创粉丝点击