我正在使用linux \ unix os。当我运行下面的代码时,我得到2个输出。如以下所说的:

a)12345-
b)1-2-3-4-5-

谁能让我知道上述两个输出为何以及如何输出?

int main()
{
 int i, n, pfds[2];
 char c, buf[80];

 pipe(pfds);
 if (fork() == 0)
 {
   for (c='1'; c<='5'; c++)
     write(pfds[1], &c, 1);
 }
 else
 {
   close(pfds[1]);
   while ((n = read(pfds[0], buf, sizeof(buf))) > 0)
   {
    write(1, buf, n);
    write(1, "-", 1);
   }
 }
 return 0;
}

最佳答案

Linux将您的写入缓冲到管道中,并在某些时候刷新缓冲区,而读取fork一次性读取所有内容。您应该能够在写入后通过执行fflush()来更改此设置。

关于c - 获取2个相同代码的输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40758681/

10-11 18:37