我正在尝试此代码,
#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,保持我的其他进程滞后。请帮我一些建议
谢谢和问候,
鸭