进程程序替换为的是为了使父进程与子进程能够执行不同程序
因为父进程通过fork()创建的子进程,与父进程执行相同程序,当我们想让子进程执行不同的程序时,就需要使用exec函数将子进程与新程序替换
进程程序替换需要注意几点
- 程序替换不会创建新进程,也不会销毁进程
- 替换代的码和数据(从一个可执行文件中来)
- 替换后原有的堆和栈中的数据全都不要了,根据新的代码 的执行过程重新构建堆和栈的内同,类似于双击exe执行一个程序的过程(操作系统的加载器模块)
exec 函数族 其中参数有差异,底层原理差不多相同
exrcl 中的l意为 list,这个exec函数是一个可变参数列表的函数
函数 | 功能 |
---|---|
execl | 可变参数列表的函数 |
execlp | 自动从PATH路径中找到可执行程序 |
execle | 需要传入代替换程序路径,需要程序员自己管理环境变量 |
参数的含义依次是:替换的程序路径,所要替换的程序,命令行参数,以NULL识别结束