#include
#include
#include
#include
int main(void)
{
pid_t pid;
if ((pid=fork())<0)
{
printf("fork error!\n");
exit(1);
}
else if(pid==0)
{
printf("child process\n");
}
else
{printf("parent process\n")
}
exit(0);
}
说是由于父进程和子进程的运行无关。其结果有可能是
child process
parent process
也有可能是
parent process
child process
我不明白的是:这里面的父进程指的是什么?而且还有判断完一遍pid的值后 怎么还会判断第二遍?
敬请大侠帮忙
lans0625 于 2008-12-30 23:43:03发表:
在子进程没有结束之前,它的父进程是可以结束的,此时,操作系统会指认一个在操作系统启动时
就开启的进程作为该子进程的父进程。建议你学习一下《操作系统原理》。
shenhang17 于 2008-12-10 22:04:33发表:
我终于明白deepwhite的意思了。
shenhang17 于 2008-12-10 19:42:44发表:
哦 这样啊。
可是pid的返回是在 子进程结束 或者 父进程结束时返回的。可是如果执行这个程序的父进程没有结束,也就不能有返回值。可是既然是执行这个程序的父进程,在这个程序没有结束之前就不能结束吧?
我怎么觉得有点嵌套。
deepwhite 于 2008-12-10 18:02:52发表:
int main(void)
{
pid_t pid; //定义一个pid_t类型
if ((pid=fork())<0) // 判断fork是否执行成功,失败的话会返回负值,并设置errno,
{
printf("fork error!\n");
exit(1);
}
else if(pid==0) // pid == 0的话,表明该进程为子进程,它将负责处理子进程的相关任务。
{
printf("child process\n");
}
else //这里的潜台词为(pid !=0),表明该进程为父进程,负责处理父进程的任务。
{printf("parent process\n")
}
exit(0);
}
父进程就是执行你的这个程序的进程,可以在父进程中使用getpid()来查看一下。为什么会判断两遍,看看给你加的注释就知道了,他们的作用不同。