Execle 函数|学习笔记

简介: 快速学习 Execle 函数

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

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


Execle 函数

 

Execle 函数

int execle(const char *pathename,

const char *arg0,***,NULL

char *const envp[]);

这个函数是它既可以启动指定的可执行程序,要想指定参数中传参。后面的多了一个数组,这个数组就是execle函数中最后的e代表的意思,是environment的意思。

这个函数比execl,能够通过指针数组增加参数来改变当前进程的环境变量,运行一个程序是可以看到许多环境变量的。

获得环境变量的代码:

#include

#include

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

{

char  *p;

p=getenv(“USER”);

If (p!=NULL)

printf(“USER=%s\n”,p);

p=getenv(“GONGSI”);

if(p!=NULL)

printf(“GONGSI=%s\n”,p);

return 0;

}

执行gcc test.c -o test

ls

execl execl.c  execlp  execlp.c  tags  test  test.c

在 test 里面获取到的环境变量 ,输入语句./test,运行,

结果如下:结果只显示 edu。

image.gif就要启动当下的路径中 test 名字,没有参数,就要将参数删掉,用exec启动参数,在程序中获得进程的环境变量

代码示例:

#include

#include

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

{

execlp(“./test”,“test” NULL);

printf(“after execlp\n”);

return 0;

}

运行结果:

输入语句 gcc execl.c -o execl

clear

之后输入./execl启动,打印结果如下图,

image.gif在输入 : cp execl.c execle.c

修改代码为:

把环境变量进行修改,在test中获得环境变量就能够实现

#include

#include

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

{

char *p[]={“USER=xiutao”,”GONGSI=qf”};

execle(“./test”,“test”, NULL,p);

printf(“after execlp\n”);

return 0;

}

输入语句: gcc execl.e c -o execl

./execle

运行结果为:

环境变量如下,通过 execle 启动 test 程序时就会大环境变量修改。也就是说 execle 比 execl 多在就是可以修改环境变量,其余的内容和 execl 一样的。

image.gif

注意:

一旦设置了环境变量,“USER=xiutao”,”GONGSI=qf”,那么其他的环境变量都没有的,可以在path下面查看。

把test.c写一下获取环境变量,再用execle去启动test,通过l启动是一种结果,通过le启动是另一个结果。这是因为le是可用修改当前进程的环境变量,而execl是改不了的。

相关文章
|
Python
Python 的异步编程: 解释什么是事件循环(Event Loop)?
Python 的异步编程: 解释什么是事件循环(Event Loop)?
761 2
|
存储 缓存 Linux
Linux内核文件系统:比万物之神还要强大的存储魔法!
Linux内核文件系统:比万物之神还要强大的存储魔法!
|
JSON C# 图形学
Unity——JSON的读取
Unity——JSON的读取
360 0
|
安全 网络安全 数据安全/隐私保护
深入理解HTTP协议:工作原理与安全性
【6月更文挑战第28天】HTTP是互联网基础协议,用于浏览器与服务器通信。基于请求-响应模型,无状态且可扩展。但其明文传输、缺乏身份验证和数据完整性校验导致安全问题。HTTPS 加入SSL/TLS,提供加密、身份验证和完整性校验,保障网络安全。了解HTTP原理和安全至关重要。
|
存储 Java API
一篇文章讲明白luauserdata
一篇文章讲明白luauserdata
506 0
|
小程序 Java Maven
springboot开发微信小程序
springboot开发微信小程序
377 0
|
Java Apache Spring
Java统计耗时
Java统计耗时
203 0
|
数据可视化 数据挖掘 UED
Seaborn进阶:探索数据可视化的高级功能
【4月更文挑战第17天】本文介绍了Seaborn的高级数据可视化功能:1) 使用条件化颜色映射展示数据差异;2) 通过`facetgrid`创建复杂图表布局以对比不同子集;3) 应用预设样式和自定义主题美化图表;4) 结合`plotly`生成交互式图表增强用户体验;5) 制作箱形图、小提琴图等高级统计图表揭示数据分布和关系。掌握这些技巧能帮助你创建更具洞察力和专业性的数据可视化作品。
|
存储 监控 Java
Java 中的 ThreadLocal:概念、应用及代码示例
Java 中的 ThreadLocal:概念、应用及代码示例
291 0
|
域名解析 缓存 网络协议
DNS(Domain Name System,域名系统)详解
DNS(Domain Name System,域名系统)是互联网中用于将域名转换为相应IP地址的分布式命名系统。虽然不是严格意义上的局域网协议,但它在中大型局域网起着至关重要的作用。它负责将域名映射为IP地址,使得用户可以使用易记的名称访问网络资源。
1625 0