1.在fork返回之前,创建了子进程的 PCB数据结构,以及拷贝了一份父进程的地址空间和页表;此时页表是出于只读,一旦修改就会写实拷贝;
2.在修改之前,虚拟地址都是一样的,且映射的物理地址也是一样的;...查看上一个进程的退出码
1.在main函数中return
2.调用exit
3.调用_exit
2.2main函数返回值
main函数虽然是主函数,但毕竟也是个函数,最后的返回值即使告诉操作系统是否正常结束...退出码的作用就是告诉父进程,子进程的退出状态-是正常结束了还是出现错误终止了;
2.为什么要用退出码判断进程是否出错,直接printf不好吗?...,有的时候我们需要知道子进程的结果,然后继续执行后序的代码,这个时候就需要等待子进程完成任务后,获取子进程的退出码看看他完成的怎么样了;
2.避免僵尸进程:子进程先父进程结束会出现僵尸状态,造成进程卡死...,那么父进程将不会一直阻塞,而是会返回0后继续执行后面的代码,如果子进程退出了,那么返回子进程的PID;
返回值:
正常执行(没有设置WNOHANG):此时和wait一样;
等待成功就会返回子进程pid