Unix-Linux 编程实践教程 第八章 小结

  • 执行程序的函数---execvp()                                                                                                                                        execvp中的argv是一个指针数组(数组元素为指针),最后一个指针需为NULL;execvp将在环境变量PATH中寻找file。execvp是先擦除当前进程空间的数据,然后再将目标程序代码从磁盘上载入到当前进程空间
  • 复制当前程序到新的进程空间---fork()。进程调用fork(),转到内核,内核进行以下操作:
    1. 分配新的内存块和内核数据结构
    2. 复制原来的进程到新的进程
    3. 向运行进程集添加新的进程
    4. 将控制权返回给两个进程(在父进程中,fork()返回值不为0,在子进程中fork()返回值为0) 
  • 等待子进程结束函数---wait()。wait()实际上时阻塞地等待SIGCHILD信号,如果设置了SIGCHILD处理函数,那么会先执行处理函数,再wait()返回。      
  • exit()->调用由atexit()或on_exit()注册的函数->_exit()。
  • _exit()流程:
    1. 关闭所有文件描述符和目录描述符
    2. 将该进程的PID设置为init进程的PID
    3. 如果父进程调用wait,即通知父进程
    4. 向父进程发送SIGCHILD
  • 已经死亡却没有给exi()没有赋值的进程叫做僵尸(zombie)进程

转载于:https://my.oschina.net/u/3281747/blog/2933817

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值