产生原因
父进程结束,子进程依旧执行,子进程就是孤儿进程,而操作系统会将孤儿进程通过init(PID==1)来管理。
因为内核中PCB结构只会记录进程的ppid,无法记录进程的所有子进程的pid,所以父进程只有在fork时才能获取子进程的pid
malloc函数仅仅申请的虚拟地址空间上的空间,并没有分配真实的物理内存,当给其中存储数据时,才会分配物理内存
int main()
{
pid_t pid=fork();
assert(pid!=-1);
if(pid==0)
{
sleep(10);
printf("child pid=%d,ppid=%d\n",getpid(),getppid());
}
else
{
printf("---father----\n");
}
}