linux一个简单的fork

jack_leiwin 2013-10-16 03:55:15
1先展示两个子函数
//add.c

#include<stdio.h>
int main()
{
int a=3,b=2;
printf(a+b=%d\n",a+b);

return 0;
}

//minus.c

#include<stdio.h>
int main()
{
int a=3,b=2;
printf(a+b=%d\n",a+b);

return 0;
}


//运行的主要函数
#include<stdio.h>
#include<unistd.h>
int main()
{

int pid = fork();

if(pid < 0 )

{

printf("make process error!");

return 0;

}

if(pid == 0 )

{

printf("child process running , minus sucessed!");

execl("minus",NULL); //输出a-b=1;
}

else

{

printf("father process running , add sucessed!\n");

execl("add",NULL);//输出a+b=5;
}


return 0;

}


//运行结果是
father process running , add sucessed!
a+b=5;
a-b=1;


各位大神前辈啊,child process running,minus successed!这句话哪儿去啦?

...全文
193 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jack_leiwin 2013-10-18
  • 打赏
  • 举报
回复
还有没有大牛了呢?
AnYidan 2013-10-16
  • 打赏
  • 举报
回复
引用 3 楼 max_min_ 的回复:
子进程的输出缓冲阻塞了!没有刷新输出缓冲区! 加"\n"或者fflush(stdout)都可以! ps: 上面加法减法程序printf函数少了一个左双引号!
++
jack_leiwin 2013-10-16
  • 打赏
  • 举报
回复
/*子函数修正*/
//add.c
#include<stdio.h> 
int main()
{
int a=3,b=2;
printf("a+b=%d\n",a+b);
return 0;
}
//minus.c
#include<stdio.h> 
int main()
{
int a=3,b=2;
printf("a-b=%d\n",a-b);
return 0;
}
max_min_ 2013-10-16
  • 打赏
  • 举报
回复
子进程的输出缓冲阻塞了!没有刷新输出缓冲区! 加"\n"或者fflush(stdout)都可以! ps: 上面加法减法程序printf函数少了一个左双引号!
missheaven2011 2013-10-16
  • 打赏
  • 举报
回复
printf("child process running , minus sucessed!"); 改为 printf("child process running , minus sucessed!\n"); 试试
jack_leiwin 2013-10-16
  • 打赏
  • 举报
回复
//minus函数修正
//minus.c

#include<stdio.h>
int main()
{
int a=3,b=2;
printf(a-b=%d\n",a-b);

return 0;
}


70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧