例如: 用C语言编写一个程序,建立一个pipe,同时父进程生成一个子进程,子进程向pipe中写入一字符串,父进程从pipe中读出该字符串。
解: 程序如下:
#include 〈stdio.h〉
main()
{
intx,fd〔2〕;
char buf〔30〕,s〔30〕;
pipe(fd);/*创建管道*/
while((x=fork())==-1);/*创建子进程失败时,循环*/
if(x==0)
{
sprintf(buf,〃This is an example\n〃);
write(fd〔1〕,buf,30);/*把buf中字符写入管道*/
exit(0);
}
else/*父进程返回*/
{
wait(0);
read(fd〔0〕,s,30);/*父进程读管道中字符*/
printf(〃%s〃,s);
}
}
中,当创建子进程成功后,x的返回值只有一个要么=0要么大于0。即在ifelse语句中只有一条语句能执行要么执行子进程要么执行父进程,不可能先执行子进程之后在执行父进程吧。即使子进程和父进程是相互独立的并行的