linux进程替换(简介)
创始人
2024-04-27 23:42:12

一:什么是进程替换?

定义:

进程替换,是指用一个新进程来替换此时正执行的进程。新进程从头开始执行自己的代码。

例子:

我们有一个父进程A,在父进程A中有一个子进程B

一般来说,子进程是执行父进程的程序代码

但我们这个时候将一个新的程序赋给子进程B,这个时候父进程A和子进程B就相当于两个独立的程序,各自运行了

 简单来说:就是让父进程中的某个子进程独立运行其他程序

二:如何进行进程替换?

我们使用六个进程替换的系统调用,他们分别是

execl,execlp,execle,execv,execvp,execvpe

 

 我们经过观察发现int exec都是相同的,不同的只是后面几个字母

 为了方便大家理解,我们从最基础的两个使用开始

execl:

execl("绝对路径","使用方法",NULL);

举例:

execl("/usr/bin/ls", "ls", "-a", "-l", "-i", NULL);

execv:

execv("绝对路径","指针数组")(备注:指针数组需要自己定义)

举例:

 char* const argv[NUM] = {(char*)"ls", (char*)"-a", (char*)"-i", (char*)"-l", NULL};execv("/usr/bin/ls", argv);

有些小伙伴就要说了:替换一个程序还要打根目录,烦不烦啊!

所以这个时候,我们的P兄弟就出来了

他们就是execlp和execvp

他们不需要打根目录,进程根据此进程名自动去环境变量中遍历查找该进程的路径,直接能在当前目录生成

execlp("ls", "ls", "-a", "-l", "-i", NULL);char* const argv[NUM] = {(char*)"ls", (char*)"-a", (char*)"-i", (char*)"-l", NULL};execvp("ls", argv);

最后也就是execle和execlvpe,就是我们可以使用自己写的程序,通过环境变量来进行替换

execle:

execle("绝对或相对路径",“进程名字”,“方法”,NULL,“环境变量”)

char* const env[NUM] = {(char*)"MY_ENV=2001",(char*)"YOU_ENV=2002",NULL};//这里路径可以是绝对路径,也可以是相对路径execle("./myproc", "myproc", "-b", NULL, env);

execlvpe:

execlvpe(“进程路径”,“名字+方法+NULL的指针数组”,“存放环境变量的指针数组”)

char* const envp[NUM] = {(char*)"MY_ENV=2001",(char*)"YOU_ENV=2002",NULL};//argvchar* const argv[NUM] = {(char*)"myproc",(char*)"-a",NULL};//execvpe("myproc", argv, envp);execvpe("myproc", argv, envp);

相关内容

热门资讯

北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...