我一直在嘗試實現fifo寫入和讀取,場景如此,writer1向fifo寫入4個字節,reader1讀取2個字節,reader2讀取接下來的2個字節,下面是我做了什麼,從FIFO讀取/寫入
writer.c
#include<stdio.h>
#include<unistd.h>
#include<fcntl.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<string.h>
int main()
{
FILE *file;
unsigned char message[] = {0x66,0x66,0x67,0x67};
file = fopen("fifo1","wb");
fwrite(&message, 1,4,file);
}
reader.c
#include<stdio.h>
#include<unistd.h>
#include<fcntl.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<string.h>
int main()
{
FILE *file;
unsigned char buff[2];
file = fopen("fifo1","rb");
fread(&buff, 1,2,file);
printf("%c\n",buff[0]);printf("%c\n",buff[1]);
}
然後我遵守他們與跑reader1第一終端和reader2第二終端和作家在th e第三終端。
我以爲我會在其中一個讀取器中獲得前兩個字節(ff),而在另一個讀取器中獲得後兩個字節(gg),但它沒有像我想的那樣工作,有人可以讓我知道我做錯了什麼,請注意,我不在乎誰讀了前兩個字節或後兩個字節,這裏重要的是兩個讀取器一次讀取2個字節。我使用Ubuntu,GCC mkfifo創建了fifo。
寫入和讀取與二進制確定 – Ivan
真棒的人,它工作:) – Ivan