在Linux中要使用exec函数族。系统调用execve()对当前进程进行替换,替换者为一个指定的程序,其参数包括文件名(filename)、参数列表(argv)以及环境变量(envp)。exec函数族当然不止一个,但它们大致相同,在 Linux中,它们分别是:execl,execlp,execle,execv,execve和execvp,下面我只以execlp为例,其它函数究竟与execlp有何区别,请通过manexec命令来了解它们的具体情况。
一个进程一旦调用exec类函数,它本身就"死亡"了,系统把代码段替换成新的程序的代码,废弃原有的数据段和堆栈段,并为新程序分配新的数据段与堆栈段,唯一留下的,就是进程号,也就是说,对系统而言,还是同一个进程,不过已经是另一个程序了。(不过exec类函数中有的还允许继承环境变量之类的信息。)

如果我的程序想启动另一程序的执行但自己仍想继续运行的话,怎么办呢?那就是结合fork与exec的使用。下面一段代码显示如何启动运行其它程序:

#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
char command[256];
void main()
{
int rtn; /*子进程的返回数值*/
while(1) {
/* 从终端读取要执行的命令 */
printf( ">" );
fgets( command, 256, stdin );
command[strlen(command)-1] = 0;
if ( fork() == 0 ) {/* 子进程执行此命令 */
 execlp( command, NULL );
 /* 如果exec函数返回,表明没有正常执行命令,打印错误信息*/
 perror( command );
 exit( errno );
}
else {/* 父进程, 等待子进程结束,并打印子进程的返回值 */
 wait ( &rtn );
 printf( " child process return %d\n", rtn );
}
}
}

Linux exec函数相关推荐

  1. Linux exec函数的使用

    1. 示例 /*exec函数示例*/ #include <stdio.h> #include <unistd.h>int main(void) {int flag;pid_t ...

  2. python exec函数_Python3 exec 函数

    Python3 exec 函数 描述 exec 执行储存在字符串或文件中的 Python 语句,相比于 eval,exec可以执行更复杂的 Python 代码. 语法 以下是 exec 的语法: ex ...

  3. linux:exec族函数, exec族函数配合fork使用,system 函数,popen 函数

    1.exec族函数 精彩博文: https://blog.csdn.net/u014530704/article/details/73848573 ​ ​ ​ path:   比如说 ./a.out ...

  4. linux exec 二程序,二十五、Linux 进程与信号---exec函数

    25.1 介绍 在用 fork 函数创建子进程后,子进程往往要调用一种 exec 函数以执行另一个程序 当进程调用一种 exec 函数时,该进程完全由新程序代换,替换原有进程的正文,而新程序则从其 m ...

  5. linux基础知识——exec函数

    1.exec函数 \qquadfork()函数在执行之后,父子进程其实还是执行同一个程序,不同的只是同一个程序的不同分支.如果要想让子进程执行另外一个不同的程序,这时候需要调用exec函数,这时候子进 ...

  6. linux 进程函数替换,Linux使用exec函数实现进程替换的代码分享

    这篇文章主要介绍了Linux 进程替换(exec函数)实现代码的相关资料,需要的朋友可以参考下 Linux 进程替换(exec函数)实现代码# include #include #include #i ...

  7. Linux 高并发学习笔记 - exec 函数簇重载进程

    2.2.4 exec 函数簇重载进程 Linux 高并发学习笔记 - 笔记索引 execl.execlp.execle.execv.execvp.execvpe exec函数簇将重载进程,直接覆盖当前 ...

  8. Linux exec 系列函数:execl execv等

    Linux exec 系列函数:execl execv等 1. exec函数族 1.1 exec 重要说明!!! 1.2 使用exec函数族主要有两种情况: 2. exec函数族共有6种不同形式的函数 ...

  9. linux的exec函数

    在用fork函数创建子进程后,子进程往往要调用一个exec函数以执行另一个程序 当进程调用一种exec函数时,该进程完全由新程序代换,而新程序则从其main函数开始执行.因为调用exec并不创建新进程 ...

最新文章

  1. 2000及2005通用分页
  2. 使用screen后台运行python(基于centOS7.2)
  3. ftp安装和虚拟用户创建(终于搞清楚了)
  4. 视频 | 在小程序竞争激烈的今天,淘票票如何脱颖而出?
  5. 如何查看python安装路径
  6. C/C++|Qt工作笔记-4种方法判断当前对象(类)名或标识(继承发,typeid法,元对象className()法,Q_CLASSINFO法)
  7. BZOJ2654/COGS1764 [2012国家集训队]tree(陈立杰) [生成树,二分]
  8. hash ruby 定义 嵌套_【译】rails的嵌套属性(Nested Attributes)使用
  9. eclipse没有server选项怎么解决
  10. java的null类型强转
  11. JavaScript String 对象、Math 对象使用详解
  12. Pandas一键爬取解析代理IP与代理IP池的维护
  13. ubuntu16.04查看opencv版本
  14. Ubuntu修改IP地址不生效解决办法
  15. xlsx文件怎么打开
  16. n维单位向量的生成公式
  17. 小红书数据平台:笔记爆文率提升的三大秘诀公式!
  18. C语言实现简易日历(附源码)
  19. 2019java 开发工程师 最新面试官 问的问题
  20. Synology NAS群晖DS218play 运行内存测试

热门文章

  1. 门铃呼叫器_门铃呼叫器按哪个按键给对方开门?
  2. 【锁】悲观锁与乐观锁实现
  3. Java修饰符与关键字
  4. 【angular5】浅谈angular5与serviceWorker——(2)
  5. 基于Quartus II 软件(VHDL)设计
  6. H5项目常见问题汇总及解决方案 1
  7. 嵌入式毕设分享 stm32人体健康状态检测系统(项目开源)
  8. 图解HTTP四:返回结果的 HTTP 状态码
  9. 人工智能ai写作系统,ai智能写作机器人
  10. ROP Emporium ret2csu