Linux execve函数簇用法
exec函数簇实现的功能都是用一个新程序替换原来的程序,替换的内容包括堆栈段,代码段,进程控制器PCD,但是原进程的PID保持不变
int execl(const char *path, const char *arg, ...);
...表示参数是可变参数列表,例如execl("hello","参数1","参数2","参数3",NULL)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h> int main(int arg,char *args[])
{
execl("/bin/ls","/bin/ls","-la",NULL);
/*备注:这里参数写"ls",execl()无法找到ls程序*/
printf("fly with me\n");
return ;
}
int execlp(const char *file, const char *arg, ...);
p表示无需填写路径,只要填写文件名称,因为execlp()函数会在当前环境变量PATH下查找该文件
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h> int main(int arg,char *args[])
{
execlp("ls","ls","-la",NULL);
printf("fly with me\n");
return ;
}
int execle(const char *path, const char *arg,..., char * const envp[]);
参数envp是一个以NULL结尾的字符串数组,代表程序员自定义的环境变量,标准写法是KEY=VALUE
如果envp参数传值NULL,在被替换进程打印的是NULL
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h> int main(int arg,char *args[])
{
printf("old getpid()=%d\n",getpid());
char *envps[]={"aa=11","bb=22",NULL};
execle("./hello","./hello",NULL,envps);
return ;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h> extern char **environ; int main(int arg,char *args[])
{
printf("fly with me;getpid()=%d\n",getpid());
int i=;
for(i=;environ[i]!=NULL;i++)
{
printf("%s\n",environ[i]);
}
return ;
}
int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);
Linux execve函数簇用法的更多相关文章
- linux中execve函数的用法
在父进程中fork一个子进程,在子进程中调用exec函数启动新的程序.exec函数一共有六个,其中execve为内核级系统调用,其他(execl,execle,execlp,execv,execvp) ...
- linux execl()函数 关于execl()函数族的用法不在赘述,
linux execl()函数 关于execl()函数族的用法不在赘述, linux 网络编程 1---(基本概念) 1.TCP和UDP协议 共同点:同为传输层协议 不同点: TCP:有连接,可靠 U ...
- Linux里AWK中split函数的用法
跟java里的split函数的用法是很相像的,举例如下: The awk function split(s,a,sep) splits a string s into an awk array a u ...
- C语言中system()函数的用法总结(转)
system()函数功能强大,很多人用却对它的原理知之甚少先看linux版system函数的源码: #include <sys/types.h> #include <sys/wait ...
- Linux Clone函数
Linux Clone函数 之前某一次有过一次面试,问了内核中是怎么创建命名空间的? 下面就来扒一扒clone的精髓,以及如何通过它创建命名空间. 目录 Linux Clone函数 使用clone创建 ...
- linux中make的用法
一.linux中make的用法 目的: 基本掌握了make 的用法,能在Linux系统上编程.环境: Linux系统准备: 准备三个文件:file1.c, file ...
- linux select函数详解
linux select函数详解 在Linux中,我们可以使用select函数实现I/O端口的复用,传递给 select函数的参数会告诉内核: •我们所关心的文件描述符 •对每个描述符,我们所关心的状 ...
- (转)linux 中特殊符号用法详解
linux 中特殊符号用法详解 原文:https://www.cnblogs.com/lidabo/p/4323979.html # 井号 (comments)#管理员 $普通用户 脚本中 #!/b ...
- [转帖]Linux date命令的用法(转)
Linux date命令的用法(转) https://www.cnblogs.com/asxe/p/9317811.html 1.命令:date 2.命令功能:date 可以用来显示或设定系统的日期与 ...
随机推荐
- Zend Studio 9.0.4 新建项目
PHP IDE一直在用zendstudio5.5版 ,虽然写代码没啥问题,但官方版本已经到10了,尝试一下吧! 打开zend studio 10, FILE -> NEW -> PROJE ...
- Grunt安装配置教程:前端自动化工作流
Grunt这货是啥? Grunt 是一个基于任务的 JavaScript 项目命令行构建工具. 最近很火的前端自动化小工具,基于任务的命令行构建工具 http://gruntjs.com Grunt能 ...
- yii2搭建完美后台并实现rbac权限控制案例教程
作者:白狼 出处:www.manks.top/article/yii2_frame_rbac_template 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连 ...
- java中equals和"=="的区别
"=="号,它比较的是一个对象在内存中的地址值, 比如2个字符串对象String s1 = new String("str");String s2 = new ...
- js 数组删除指定元素
Array.prototype.remove = function(obj) { for (var i = 0; i < this.length; i++) { var temp = this[ ...
- 烂泥:使用snmpwalk采集设备的OID信息
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 打算开始学习有关监控方面的知识,但是现在很多监控系统都是根据SNMP进行的.而SNMP监控的性能指标很多都是通过snmpwalk采集设备的OID信息得到 ...
- struts请求源码的跟踪
最近工作任务不是很紧,时间也不能白白浪费,以前常用的struts2框架源码没去了解过,所以就跟踪一下struts2的整个执行过程.由于本人也是抱着学习的态度来阅读掩码,若文章在表述和代码方面如有不妥之 ...
- android 滑动滚动条调节音量
利用滚动条滑动控制音量: 定义: private SeekBar mseekBarvolume: 以下实现代码: //调节音量--begin------------------------- //音量 ...
- ubuntu将命令写在一个文件里,执行文件,source命令
source命令也称为“点命令”,也就是一个点符号(.).source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录.用法: source filename 或 . fil ...
- WPF捕获未处理的异常
WPF程序中,对于异常的捕获一般使用try/catch块.就像程序中的bug一样,很难保证程序中所有的异常都能够通过try/catch捕获.如果异常没有被捕获,轻则影响用户体验,严重时会导致数据丢失 ...