当前位置: 技术问答>linux和unix
帮看看这个程序错在哪里?
来源: 互联网 发布时间:2015-10-03
本文导语: /*这个程序是创建父子进程,分别在父子进程中打印它是父进程或子进程,在父进程调用 wait 等待子进程结束,运行这个程序得不到想要的结果,在fork()之后它进入不了父进程, 并且子进程它执行两次.why?why?*/ #include #inc...
/*这个程序是创建父子进程,分别在父子进程中打印它是父进程或子进程,在父进程调用 wait
等待子进程结束,运行这个程序得不到想要的结果,在fork()之后它进入不了父进程,
并且子进程它执行两次.why?why?*/
#include
#include
#include
#include
main()
{
pid_t pid;
int statbuf;
pid=getuid();
printf("before fork pid:%dn",pid);//打印当前pid
if(pid=fork()0)
{
//wait(&statbuf);
printf("this is parentn");
printf("statbuf:%dn",statbuf);
return 0;
};
};
运行结果为:(把 //wait(&statbuf)的//去掉也是一样)
before fork pid:0
pid:0
this is child
pid:0
this is child
按回车继续!
等待子进程结束,运行这个程序得不到想要的结果,在fork()之后它进入不了父进程,
并且子进程它执行两次.why?why?*/
#include
#include
#include
#include
main()
{
pid_t pid;
int statbuf;
pid=getuid();
printf("before fork pid:%dn",pid);//打印当前pid
if(pid=fork()0)
{
//wait(&statbuf);
printf("this is parentn");
printf("statbuf:%dn",statbuf);
return 0;
};
};
运行结果为:(把 //wait(&statbuf)的//去掉也是一样)
before fork pid:0
pid:0
this is child
pid:0
this is child
按回车继续!
|
这个语句很简单,before fork pid:。。。,这已经说的是用户的id,root帐号的uid一定为0
而理解这段程序关键是理解fork调用。
if(pid=fork()
而理解这段程序关键是理解fork调用。
if(pid=fork()