我一直在尝试使用 FIFO 实现 IPC,我做了以下,它似乎工作正常,测试了几次,对我来说看起来不错。
问题是我需要注意什么,我知道读取和写入将是原子的,因为我将在 PIPE_BUF 下方写入。
我已经像这样运行它
。/作家
./读者 ./读者
我看到阅读器工作正常,例如第一个阅读器阅读 1,然后第二个阅读器阅读 2 和 3,然后第一个阅读器阅读 4,依此类推。
请注意,我在这里找到了代码并对其进行了修改。
作家.c
#include<stdio.h>
#include<unistd.h>
#include<fcntl.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<string.h>
int main()
{
int fd,fd1;
fd=open("fifo1",O_WRONLY);
int data = 1;
while (1){
write(fd,&data,sizeof(int));
usleep(10);
data++;
}
//printf("File Content :%s",s1);
}
读者.c
#include<stdio.h>
#include<unistd.h>
#include<fcntl.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<string.h>
int main()
{
int fd,fname;
mkfifo("fifo1",0600);
fd=open("fifo1",O_RDONLY);
int d = 0;
while(read(fd,&d,sizeof(int))!=0)
{
printf("%d\n",d);
usleep(10);
}
close(fd);
}