fifo_read0

#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define FIFO "/tmp/myfifo"
void  my_strupr(char *str)
{
    char *p;
   
    p = str;
    while(*p != '\0' )
    {
        if(*p >= 'a' && *p <= 'z')
        {
            *p = *p-32;
        }
        p++;
    }
}
int main(int argc,char** argv)
{
    char buf_r[100];
    int  fd;
    int  nread;
   
   
    /* 创建管道 */
    if((mkfifo(FIFO,O_CREAT|O_EXCL)<0)&&(errno!=EEXIST))
        printf("cannot create fifoserver\n");
   
    printf("Preparing for reading bytes...\n");
    memset(buf_r,0,sizeof(buf_r));
    /* 打开管道 */
    fd=open(FIFO,O_RDONLY|O_NONBLOCK,0);
    if(fd==-1)
    {
        perror("open");
        exit(1);   
    }
    while(1)
    {
        memset(buf_r,0,sizeof(buf_r));
       
        if((nread=read(fd,buf_r,100))==-1)
        {
            if(errno==EAGAIN)
                printf("no data yet\n");
        }
        my_strupr(buf_r);
        printf("read %s from FIFO\n",buf_r);
        sleep(1);
    }
    pause(); /*暂停,等待信号*/
    unlink(FIFO); //删除文件
}

猜你喜欢

转载自blog.csdn.net/qq_34859668/article/details/60466626
今日推荐