|
/*fork.c*/
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
pid_t result;
/*调用fork函数,其返回值为result*/
result = fork();
/*通过result的值来判断fork函数的返回情况,首先进行出错处理*/
if(result == 1){
perror("fork");
exit;
}
/*返回值为0代表子进程*/
else if(result == 0){
printf("The return value is %d\nIn child process!!\nMy PID is %d\n",result,getpid());
}
/*返回值大于0代表父进程*/
else
{
printf("The return value is %d\nIn father process!!\nMy PID is
%d\n",result,getpid());
}
}
问题:
1、这里的result是局部变量吧?这里为什么在else if完了之后又会去执行else里面的内容呢?是因为执行else if了之后result值发生了变化吗?要是这样,是什么时候又重新给result赋值了呢?
2、这里:
else if(result == 0){
//该括号内执行的语句都是在子进程里面执行的吗?
}
Else{
//该括号内执行的语句都是在父进程里面执行的吗?
} |
|