请教下LINUX 下FORK()问题

太阳石协议 2016-09-20 10:39:17
#include <stdio.h>
#include<unistd.h>

int main()
{
pid_t pid;
printf("\n\n");
pid =fork();
printf("pid = %d\n");
switch(pid)
{
case 0:
printf("child pid =%d\n",getpid());
break;
default:
printf("parent pid =%d\n",getpid());
break;
}
execlp("/mnt/hgfs/share/fork2","argv1","argv2",NULL);
return 0;
}

这是段建立进程程序,执行结果 pid = 5467296
parent pid =2771
pid = 5467296
child pid =2772

argc = 2
argv[0]= argv1
argv[1]= argv2
fork exit

argc = 2
argv[0]= argv1
argv[1]= argv2
fork exit

问题:1: 为什么执行pid =fork()后,PID 不为0,但是还执行CASE 0 这个分支了?
2: pid = fork(); 执行后 得到的子进程PID 与子进程GETPID后得到的数 是一个意义么?
...全文
475 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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