如题所示,我在 Linux 系统中使用 C 在两个程序之间完成这项工作。 但是,我遇到了一些问题。 假设我有一个服务器在十轮内将数据写入 FIFO,并且 客户端将读取每一轮数据并写入另一个 FIFO 来馈送 返回服务器。 客户端将在每一轮中阻塞,直到服务器写入数据为止。 但是,我的客户端程序不能这样做。
我使用 fopen
打开 FIFO,使用 fgets
读取数据。
好像没有阻塞等待数据写入。
客户端代码:
FILE *fp_R,*fp_W;
char temp[100];
fp_R = fopen(FIFO_R,"rb");
fp_W = fopen(FIFO_W,"wb");
for ( i = 0 ; i < 10 ; i ++ ) {
fgets(temp, 100, fp_R);
Handle Data;
fprintf(fp_W,DATA);
}
我想fgets
等待服务器写入数据,这样我就可以处理每一轮
谢谢大家的帮助
最佳答案
正如 TonyB 所说,fopen()
函数将返回一个文件指针 FILE*
FILE *fp_R, *fp_W;
char temp[100];
fp_R = fopen(FIFO_R,"rb");
fp_W = fopen(FIFO_W,"wb");
for ( i = 0 ; i < 10 ; i ++ ) {
char* ret = fgets(temp, 100, fp_R);
while(ret == null)
{
Sleep(1);
}
Handle Data;
fprintf(fp_W,DATA);
}
关于c - 如何使用 FIFO 等待有人写入和读取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33949443/