从fifo C读取数据

从fifo C读取数据,c,fifo,C,Fifo,我试图从一个fifo中读取数据,但我不理解它的行为。 这是写端,write.c: for(int i = 1;i<argc;i++){ if(write(fifoFd,argv[i],strlen(argv[i])) <= 0) perror("Error writing"); } for(int i=1;i您的代码: while(1){ int b = read(fifoFd,buf,1024); if(b<=0) break; } prin

我试图从一个fifo中读取数据,但我不理解它的行为。 这是写端,write.c:

for(int i = 1;i<argc;i++){
    if(write(fifoFd,argv[i],strlen(argv[i])) <= 0)
      perror("Error writing");
  }
for(int i=1;i您的代码:

while(1){
  int b = read(fifoFd,buf,1024);
  if(b<=0) break;
}
printf("%s\n",buf);
while(1){
int b=读取(FIOFD,buf,1024);

如果(b但是字符串不应该总是写在同一行吗?@P_Ferreira您不写所有的字符串,只写接收到的最后一个字符串。
printf
调用是在循环完成后进行的。但是为什么有时候备份是单独的,有时候字符串在同一行呢?@P_Ferreira,因为有时候所有的字符串都被写入了在你读它之前,先把烟斗打开,有时它没有。
while(1){
  int b = read(fifoFd,buf,1024);
  if(b<=0) break;
}
printf("%s\n",buf);
int read = 0;
while(read != 1024){
  int b = read(fifoFd,buf+read,1024-read);
  if(b<=0) break;
  read += b;
}
printf("%s\n",buf);