请教下FORK() 问题

太阳石协议 2016-09-21 03:33: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后得到的数 是一个意义么?

...全文
314 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fefe82 2016-09-24
  • 打赏
  • 举报
回复
fork 会让一个进程变成两个,相当于把正在运行的程序复制了一份。但是,在这两个进程里fork的返回值是不一样的。
太阳石协议 2016-09-24
  • 打赏
  • 举报
回复
能具体点么,3楼的
ID870177103 2016-09-22
  • 打赏
  • 举报
回复
fork在子进程中返回0,不是他的pid
赵4老师 2016-09-21
  • 打赏
  • 举报
回复
搜“linux fork”? 搜“毛德操 进程调度”?

69,382

社区成员

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

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