菜鸟问个关于fork的问题
下面是一段APUE上管道的示例程序,中间自己添加了一些printf看看程序的运行流程。结果发现子进程的代码段执行了两次而父进程代码段没有执行!!尽然会有这种事!!!实在搞不懂错在哪里。
这段程序在我的机器上运行结果为:
this is child process
this is child process
#include <stdio.h>
#include <unistd.h>
#define BUFSIZE 100
int main()
{
int n;
int fd[2];
pid_t pid;
char buf[BUFSIZE];
if(pipe(fd)<0)
printf("pipe errorn");
if(pid=fork()<0)
printf("fork errorn");
if (pid>0)/*parent*/
{
close(fd[0]);
printf("this is parent process");
write(fd[1],"Hello world",12);
}
if(pid==0) /*child*/
{
//sleep(1);
printf("this is child process");
close(fd[1]);
n=read(fd[0],buf,BUFSIZE);
write(STDOUT_FILENO,buf,n);
}
return 0;
}这段程序在我的机器上运行结果为:
this is child process
this is child process
...全文
相关推荐
经典面试100问PPT 菜鸟必备
经典面试100问PPT,菜鸟必备,只要熟读里面的内容,重要是理解 找工作不成问题
TrintyCore菜鸟工具
用于T端简单修改配置文件使用。
电脑知识五千问,适合菜鸟电脑维护之用
电脑知识五千问,适合菜鸟电脑维护之用电脑出现问题时,可以查查看!!
菜鸟浏览器
用来搜索qq空间背景音乐,输入搜索的qq,就可以知道qq空间的背景音乐
菜鸟数据中台技术演进
菜鸟数据中台是什么? 数据中台和数据平台区别是什么? 菜鸟怎么做数据中台? 怎么考核数据中台? 菜鸟数据中台技术演进的路程是什么? 菜鸟数据中台 和 阿里数据中台的区别是什么? 大家的疑问 数据中台解决什么实际问题?



