私は FIFO を使用して IPC を実装しようとしてきました。以下を作成しました。正常に動作しているようで、数回テストしたところ、良さそうです。
問題は、何を処理する必要があるかということです。PIPE_BUF のはるか下に書き込みを行うため、読み取りと書き込みがアトミックになることはわかっています。
私はこのようにそれを実行しました
./ライター
./リーダー ./リーダー
たとえば、最初のリーダーが 1 を読み取り、次に 2 番目のリーダーが 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);
}