Fifo Flushing Error

时间:2016-03-15 05:16:11

标签: fifo

我正在尝试此代码,

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<signal.h>

int fileFD = 0;
pthread_t Thread_application;
pthread_t Read_Thread;
void * Waiting_Thread(void * arg)
{
    while(1) {
        printf("Created Thread\n");
        sleep(1);
    }
}


void * Readtread(void *arg)
{
    char buf[1902] = {0};
    int ret = 0;
    while(1) {
        ret = read(fileFD, buf, 120);
        printf("Read Bytes\n");
    }


}
void main()
{
    int i = 0;

    mkfifo("Desktop/Trail_Programs/ClientFIFO", 0666);
    fileFD = open("Desktop/Trail_Programs/ClientFIFO", O_RDWR);
    pthread_create(&Thread_application, NULL, Waiting_Thread, NULL);
    pthread_create(&Read_Thread, NULL, Readtread, NULL);
    sleep(10);

    close(fileFD);
    pthread_kill(Thread_application, 0);
    pthread_kill(Read_Thread, 0);


    system("dd if=Desktop/Trail_Programs/ClientFIFO iflag=nonblock of=/dev/null");

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

        printf("Main Thread \n");
        fflush(stdout);
    }
}
  

输出:创建线程

     

创建主题

     

创建主题

     

创建主题

     

创建主题

     

创建主题

     

创建主题

     

创建主题

     

创建主题

     

创建主题

     

创建主题

     

dd:错误阅读   'Desktop / Trail_Programs / ClientFIFO':资源   暂时不可用

     

0 + 0记录

     

0 + 0记录

     复制

0字节(0 B),0.000314463 s,0.0 kB / s

     

主线程

     

主线程

     

主线程

     

主线程

     

主线程

     

主线程

     

主线程

     

主线程

     

主线程

     

主线程

我想当我试图将fifo刷新到/ dev / null时,read是阻塞的。在我的用例打开文件与O_NONBLOCK标志和使用选择监视fd,保持我的其他进程滞后。请帮我一些建议

谢谢和问候,

0 个答案:

没有答案