fork和execve相关记录

  1. execve
    execve() 系统调用的作用是运行另外一个指定的程序。它会把新程序加载到当前进程的内存空间内,当前的进程会被丢弃,它 的堆、栈和所有的段数据都会被新进程相应的部分代替,然后会从新程序的初始化代码和main函数开始运行。同时,进程的ID将 保持不变。
    注意:exec之后会继承父进程的句柄,所以在open时可以选择子进程不继承句柄的选项
  2. fork
    fork创建子进程的时候,父子进程是单独的虚拟内存空间,但是是共享一块物理内存空间;如果存在写,不会影响其他进程的 内容,但是会再开辟一块物理内存空间(fork写时复制copy-on-write,所以速度也很快)
    a. 多线程进程fork的时候,fork和execve之间只能调用信号安全的函数,避免死锁
    解释多线程下fork的博客:
    https://www.cnblogs.com/liyuan989/p/4279210.html
    https://breezetemple.github.io/2021/01/15/fork-safe/
    只能调用信号安全的函数出处:
    https://man7.org/linux/man-pages/man2/fork.2.html
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值