【发布时间】:2014-08-24 07:37:34
【问题描述】:
我正在尝试创建管道并将其与 fork() 一起使用。但我对执行顺序感到困惑。 在将任何内容写入管道之前,进程会从管道中读取数据。有时它运行正确。但有时,先读再写,但仍然给出正确的输出。
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
int main(void)
{
int fd[2], nbytes,ret;
pid_t childpid;
char string[] = "Hello, world!\n";
char readbuffer[80];
pipe(fd);
if(!fork())
{
close(fd[0]);
printf("Writing...");
write(fd[1], string, (strlen(string)+1));
exit(0);
}
else{
close(fd[1]);
printf("Reading...");
nbytes = read(fd[0], readbuffer, sizeof(readbuffer));
printf("Received string: %s", readbuffer);
wait(NULL);
}
return 0;
}
【问题讨论】: