进程(三)

exec函数族

exec函数族有一系列相关的函数组成,他们在进程的启动方式和程序参数的表达方式上有所不同,exec可以吧一个进程替换成另一个进程,他跟system最大的区别是,新进程启动后原来的进程就终止了

     #include<unistd.h>
     int execl(const char *path, const char *arg0, ...(char*)0);
     int execlp(const char *file, const char *arg, ...(char*)0);
     int execle(const char *path, const char *arg, ...,(char *)0,char * const envp[]);
     int execv(const char *path, char *const argv[]);
     int execvp(const char *file, char *const argv[]);
     int execvpe(const char *file, char *const argv[], char *const envp[]);

execl、execlp、execle(带“l”)的函数参数可变;

名字含字母“p”的函数会搜索PATH环境变量去查找新程序的可执行文件。如果可执行文件不在PATH定义的路径上,就必须把包括子目录在内的绝对文件名做为一个参数传递给这些函数。

名字最后一个字母为"e"的函数可以自设环境变量。

这些函数通常都是用execve实现的,虽然并不是必须要这样做。

一个exec的例子

#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>

int main(void)
{
	puts("running ps with execlp;");
	execlp("ps","ps","l",0);
	puts("Done!");
	exit(0);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值