Execl 函数|学习笔记

简介: 快速学习 Execl 函数

开发者学堂课程【物联网开发- Linux 高级程序设计全套视频Execl 函数】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/660/detail/10997


Execl 函数

 

execl 函数

先进行execl 函数、execlp 函数、execle 函数的学习。

execl函数:

int execl(const char *pathname,

const char *arg0,***,

NULL);

execl 函数要在一个进程中启动程序,要在新程序的代码内容替换当前进程。第一个是启动的路径 pathname,可以是绝对路径也可以是相对路径,;之后给 const char *arg0,***, 可以传n个参数;NULL 代表参数的结尾,比如有8个参数,当execl分析这些参数的时候,null 就认为之后没有参数是作为结尾。这个函数成功的话是不用返回0的,空间就会被替换。

代码示例:

启动这个程序运行进程,execl 函数第一个参数是启动程序的路径(相对路径和绝对路径),第二个参数必须是要有启动的文件名,没有的话第三个参数不起作用,最后用 NULL 作为结尾;在运行程序的时候把 execl 执行ls文件,一旦执行成功ls的代码就会替代当前进程的代码转而执行ls的代码,在execl函数的时候就已经把当前代码执行过了,所以printf是没有机会的,所以一旦execl函数执行过后就不会执行后续内容了,而是执行启动程序的代码。

#include

#include

Int main(int argc,char *argv[])

{

execl(“/bin/ls”,”ls”,”-a”.”-l”,”-h”,NULL);

printf(“after execl\n”);

return 0;

}

在运行界面输入语句:

gcc execl.c -o exel

ls

execl.c tags

./execl

运行结果:

没有执行 printf 语句,因为 execl 就已经替换成当前的ls文件并启动该程序

 

image.gif注意,execl 函数首先第一个参数是启动程序的路径,从第三个参数之后才是文件的内容。

Execl 是启动一个新的程序,进程还是本身的进程,进程号不变,只是进程的内容被发生了替换。

相关文章
|
5月前
|
Shell Linux
|
5月前
|
C语言
C语言 -- CreateProcess创建进程
C语言 -- CreateProcess创建进程
73 4
|
5月前
|
存储 Linux
Linux文件编程(lseek函数和stat函数)
Linux文件编程(lseek函数和stat函数)
89 0
Linux文件编程(lseek函数和stat函数)
|
5月前
|
存储 Unix C语言
C语言进程(第三章,exec函数族,execl,execlp,execle,execv,execvp,execve)
C语言进程(第三章,exec函数族,execl,execlp,execle,execv,execvp,execve)
100 0
|
10月前
|
安全 C语言
strtok()函数的使用方法
strtok()函数的使用方法
124 0
|
Shell
Shell 函数使用(定义函数、函数传参)
Shell 函数使用(定义函数、函数传参)
80 0
|
监控 NoSQL C语言
研发中学习C(file函数、宏定义、gdb调试、strstr函数)
研发中学习C(file函数、宏定义、gdb调试、strstr函数)
127 0
|
存储 Linux
Linux系统编程第六节——进程的替换(execl、exelp、execle、execv、execvp、execve)
这些函数如果调用成功则加载新的程序从启动代码开始执行,不再返回。
269 0
Linux系统编程第六节——进程的替换(execl、exelp、execle、execv、execvp、execve)