在父进程中fork一个子进程,在子进程中调用exec函数启动新的程序。exec函数一共有六个,其中execve为内核级系统调用,其他(execl,execle,execlp,execv,execvp)都是调用execve的库函数。

#include<unistd.h>

函数定义 int execve(const char *filename, char *const argv[ ], char *const envp[ ]);

返回值 函数执行成功时没有返回值,执行失败时的返回值为-1.

函数说明 execve()用来执行参数filename字符串所代表的文件路径,第二个参数是利用数组指针来传递给执行文件,并且需要以空指针(NULL)结束,最后一个参数则为传递给执行文件的新环境变量数组。

#include<unistd.h>   main()   {   char *argv[ ]={"ls", "-al", "/etc/passwd", NULL};   char *envp[ ]={"PATH=/bin", NULL}   execve("/bin/ls", argv, envp);   }  

运行结果为:-rw-r--r-- 1 root root 1659 Feb 27 20:13 /etc/passwd

这与在bin目录下执行 ls -al /etc/passwd 所得到的结果是一样的。

linux fork()和execve()的区别

fork是分身,execve是变身。

exec系列的系统调用是把当前程序替换成要执行的程序,而fork用来产生一个和当前进程一样的进程(虽然通常执行不同的代码流)。通常运行另一个程序,而同时保留原程序运行的方法是,fork+exec。

看看手册里面的例子就知道怎么用了。

exec系列的系统调用已经是变成别的程序了,已经和本程序无关了

linux中execve函数的用法相关推荐

  1. linux中stat函数的用法,os.stat()函数的用法

    os.stat() 函数会给出一个文件或文件描述符(file descriptor)的各种状态信息,如权限,大小,所属用户和组,修改时间等.这个函数实际上是调用OS的系统调用stat()来实现功能,对 ...

  2. linux waitpid实例,Linux中waitpid()函数的用法

    大家知道,当用fork启动一个新的子进程的时候,子进程就有了新的生命周期,并将在其自己的地址空间内独立运行.但有的时候,我们希望知道某一个自己创建的子进程何时结束,从而方便父进程做一些处理动作.同样的 ...

  3. linux中read函数的用法,Linux中read命令的简介及使用方法

    Linux中read命令的简介及使用方法 发布时间:2020-08-17 16:40:04 来源:亿速云 阅读:107 作者:小新 这篇文章给大家分享的是有关Linux中read命令的简介及使用方法的 ...

  4. Linux中append函数的用法,linux C代码 open函数参数:O_APPEND问题求助

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 没有截图,直接上代码吧. 原代码是这样的: #include #include #include #include #include int main() ...

  5. linux中readline函数的用法,linux系统中readline的实现

    一次笔试的时候,有一题,要求使用非脚本语言读取一个文本文件的行数,刚好这几天再看Richard Stevens的<Unix网络编程>,刚好里面有关于readline函数的实现,看代码: / ...

  6. 每天学一点儿shell:linux中时间函数的date的用法

    文章目录 1.linux中date函数格式 2.date日期函数的具体用法 2.1.获取相应格式的日期 2.2.获取相隔时间段的日期 2.2.1.获取今天的日期 2.2.2.获取昨天的日期 2.2.3 ...

  7. linux内核sock_sendmsg,为什么linux中sendto函数中的msg.msg_iovlen=1;

    为什么linux中sendto函数中的msg.msg_iovlen=1; | 内核中定义的sys_sendto的源码吗? 这个属于sendmsg中struct msghdr的用法问题, sys_sen ...

  8. Python中Print()函数的用法___实例详解(二)(全,例多)

    Python中Print()函数的用法___实例详解(二)(全,例多) 目录 十一.Print()小例子 十二.Print()中文输入显示乱码问题 十三.Print()写入文件 十四.print()在 ...

  9. linux 内核 fget,fgets函数 linux中fgets函数怎么用

    一个函数该如何使用?我们最先要了解的就是这个函数的语法以及具体的含义是什么,所以今天我们就来看一看fgets函数在实际的运用过程当中是如何使用的,希望能给大家带来一定的帮助. fgets函数--lin ...

最新文章

  1. 谷歌新模型刷新ImageNet纪录,第一作者是上海交大毕业生谢其哲
  2. C/C++掌握技能(三)
  3. 转换环境与执行环境、宿主环境与独立环境、宿主实现与独立实现
  4. 用户在电商网站中购买成功了,那么 TA 在微服务中经历了什么?
  5. 【剑指offer】面试题43:1~n整数中1出现的次数
  6. 开发指南专题十八:Navicat 数据库转换操作
  7. UVa 1586 Molar mass 分子量 题解
  8. 逻辑分析题汇总(一)
  9. 操作系统 第二部分 进程管理(二)
  10. 少儿编程scratch -- 基础篇
  11. Al-learing数学基础,平均差,方差,协方差
  12. windows输入法英文字体间距比平常大,按照设置里按下"shift+space“键,也依然如此
  13. HMS华为账号登入全部流程加详解流程机制
  14. IDEA+MySQL+JavaFX之通讯录系统
  15. 个性化MDT离线U盘
  16. 2018免费的隐私保护工具
  17. 使用 PyTorch 进行音频信号处理的数据操作和转换
  18. TOP Network项目周报:5月4日-5月12日
  19. [Python深度学习]kaggle猫狗大战
  20. 第17章 多媒体通信系统技术

热门文章

  1. MATLAB定义大气湍流模型退化函数,基于改进的Kolmogorov谱湍流模型的图像退化研究...
  2. 网上书店订单流程c语言源代码,网上书店的设计及实现.doc
  3. 迅搜 php,安装、升级 - 权威指南 - 迅搜(xunsearch) - 开源免费中文全文搜索引擎
  4. 【WT588F】网页上位机操作演示
  5. 2022年武汉东湖新技术开发区知识产权专项资助补贴38项
  6. 8月第2周业务风控关注 |电商平台卖家自爆家丑 一天要刷2000单
  7. 三星手机安装linux系统下载,ubuntu手机系统安装教程【详细步骤】
  8. 小苹果活动助手1.27最新版电脑版
  9. IVR在voip电话系统的应用与价值
  10. java需要记住什么英文_JAVA英语面试题(苦涩的记忆)