进程篇——exec函数族执行进程

本文介绍了Linux系统调用中的exec函数族,这些函数用于执行新进程,加载二进制文件并替换现有进程的内存空间。文章讨论了不同函数的查找方式,如是否考虑$PATH环境变量,以及参数传递的不同形式。最后,提供了测试代码示例,展示了如何使用execl和execle函数执行新程序,并影响环境变量。
摘要由CSDN通过智能技术生成

执行进程

在系统调用 fork() 之后,有个进程使用系统调用 exec(),以用新程序来取代进程的内存空间。系统调用 exec() 加载二进制文件到内存中(破坏了包含系统调用 exec() 的原来程序的内存内容),并开始执行。采用这种方式,这两个进程能相互通信,并能按各自方法运行。父进程能够创建更多子进程,或者如果在子进程运行时没有什么可做,那么它采用系统调用 wait() 把自己移出就绪队列,直到子进程终止。因为调用 exec() 用新程序覆盖了进程的地址空间,所以调用 exec() 除非出现错误,不会返回控制

exec函数族

在这里插入图片描述

表中前四个函数以完整的文件路径进行文件查找,后两个以p结尾的函数,可以直接给出文件名,由系统从$PATH中指定的路径进行查找。这里不同的函数后缀,代表着的含义是:
在这里插入图片描述
值得注意的是:这六个函数中真正的系统调用只有execve(),其他的都是库函数,它们最终都会调用到execve();exec函数常常会因为找不到文件,或者没有对应文件的运行权限等原因而执行失败,所以,在使用是最好加上错误判断语句。

[exec函数后缀]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值