我正在使用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/