close
/*
    mkfifo fifo1
    mkfifo fifo2
    echo "test" > fifo1
*/
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<sys/select.h>
#include<limits.h>
#include<unistd.h>
#include<fcntl.h>
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>

int main()
{
    char buffer[PIPE_BUF];
    int fd1 = open("fifo1",O_RDWR | O_NONBLOCK);
    int fd2 = open("fifo2",O_RDWR | O_NONBLOCK);
    int maxfd=fd1;
    if(maxfd<fd2)maxfd=fd2;
    maxfd++;
    printf("fd1=%d, fd2=%d, maxfd=%d",fd1,fd2,maxfd);
    fd_set fdSet;
    struct timeval tv;
    
    while(1)
    {
        FD_ZERO(&fdSet);
        tv.tv_sec=3;
        tv.tv_usec=0;
        FD_SET(fd1,&fdSet);
        FD_SET(fd2,&fdSet);
        memset(buffer,0,sizeof(buffer));
        int ready=select(maxfd,&fdSet,NULL,NULL,&tv);
        if(ready==-1)
        {
            printf("failure\n");
            continue;
        }
        if(ready==0)
        {
            printf("Timeout\n");
            continue;
        }
        if(FD_ISSET(fd1,&fdSet))
        {
            read(fd1,&buffer,sizeof(buffer));
            printf("Device 1: %s\n",buffer);
        }
        if(FD_ISSET(fd2,&fdSet))
        {
            read(fd2,&buffer,sizeof(buffer));
            printf("Device 2: %s\n",buffer);
        }
    }
    close(fd1);
    close(fd2);
}
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 o932859222 的頭像
    o932859222

    電腦江湖闖蕩記

    o932859222 發表在 痞客邦 留言(0) 人氣()