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 是启动一个新的程序,进程还是本身的进程,进程号不变,只是进程的内容被发生了替换。

相关文章
|
存储 SQL 人工智能
Android Activity启动流程一:从Intent到Activity创建
Android Activity启动流程一:从Intent到Activity创建
|
存储 Go API
使用GoFrame连接和操作TDengine时序数据库
通过使用GoFrame框架和TDengine Go驱动,我们可以方便地连接和操作TDengine时序数据库。无论是插入、查询还是分析时序数据,都可以通过简单的API调用来实现。GoFrame提供了强大的Web开发功能,结合TDengine的高性能时序数据存储和查询能力,可以构建高效、可扩展的时序数据应用。
336 5
|
弹性计算 应用服务中间件 定位技术
基于地理位置的访问策略的GA加速最佳实践
全球加速GA是阿里云提供的全球网络加速服务,支持基于地理位置的访问策略。本文介绍如何通过多组GA实例组合,实现一个域名在全球多个区域的服务同步加速。具体步骤包括创建ECS实例、部署Nginx服务器、配置GA及全局流量管理器等。
514 5
|
JavaScript 前端开发 Java
浮点数介绍
【10月更文挑战第21天】
1254 1
|
人工智能 JSON 算法
不是吧?这么好用的开源标注工具,竟然还有人不知道…
LabelU是一款专为AI项目设计的强大多模态数据标注工具,支持图像、视频、音频等多样化数据类型。它提供灵活的标注工具与自定义配置选项,让用户根据需求定制高效标注流程。特色功能包括一键载入预标注结果以简化修正工作,以及支持JSON、COCO等多种格式的导出选项。LabelU既可本地部署确保数据安全,也提供在线版本方便快速上手。此外,OpenDataLab还开源了Label-LLM对话标注工具和MinerU文档处理工具,进一步丰富了数据准备的工作流。欢迎访问[LabelU](https://github.com/opendatalab/labelU)了解更多详情,并为这些优秀工具点赞支持!
1238 0
不是吧?这么好用的开源标注工具,竟然还有人不知道…
|
SQL 安全 Oracle
SQLMap工具详解与SQL注入防范
SQLMap工具详解与SQL注入防范
pid控制器的工作原理
【2月更文挑战第1天】假设你是一个工厂的工程师,你的工作是控制一个生产过程,这个过程是将材料加热到一定的温度,然后通过一个机器将材料加工成成品。
484 9
|
算法 Unix Linux
【C/C++ 疑难解决】深入解析C++链接错误:实用的调试技巧和方法
【C/C++ 疑难解决】深入解析C++链接错误:实用的调试技巧和方法
1577 1
|
Linux API C++
C++ 11 使用detach()和join()函数使用的注意点
最近做项目的时候,使用了c++11的多线程,以前做项目都是使用微软提供的一些api,比如临界区、Mutex等来实现多线程,但是比如临界区这玩意只在windows下才有,linux是没有这个概念的,所以为了跨平台,c++11之后,就提供了多线程的支持。
349 0
修改端口范围
1、查看命令 [root@www ~]# sysctl -a | grep local 或cat /proc/sys/net/ipv4/ip_local_port_range 2、修改端口范围 1)永久修改 vi /etc/sysctl.conf 添加下面一行: net.ipv4.ip_local_port_range = 1024 65535 然后执行: sysctl -p 生效。
1576 0