FIFO 块程序直到其他进程读取
FIFO block program until other process read
我正在使用一个 FIFO 文件,在 Linux 终端上创建为 mkfifo myFIFO
,在下面的 C++ 代码中:
#include <iostream>
using namespace std;
#include <stdio.h>
int main(int argc, char** argv) {
FILE* fp = fopen("/tmp/myFIFO", "w");
fprintf(fp, "Hello, world!\n");
fclose(fp);
cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
return 0;
}
程序一直处于阻塞状态,直到其他进程读取 myFIFO
。如何避免这种情况? (我希望这种和平的代码在 FIFO 中继续处理和写入,而不是进行其他进程的读取。直到 FIFO 已满,如果可能的话,我可能会丢弃最旧的消息)。
我正在使用一个 FIFO 文件,在 Linux 终端上创建为 mkfifo myFIFO
,在下面的 C++ 代码中:
#include <iostream>
using namespace std;
#include <stdio.h>
int main(int argc, char** argv) {
FILE* fp = fopen("/tmp/myFIFO", "w");
fprintf(fp, "Hello, world!\n");
fclose(fp);
cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
return 0;
}
程序一直处于阻塞状态,直到其他进程读取 myFIFO
。如何避免这种情况? (我希望这种和平的代码在 FIFO 中继续处理和写入,而不是进行其他进程的读取。直到 FIFO 已满,如果可能的话,我可能会丢弃最旧的消息)。