Linux exec函数
在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函数相关推荐
- Linux exec函数的使用
1. 示例 /*exec函数示例*/ #include <stdio.h> #include <unistd.h>int main(void) {int flag;pid_t ...
- python exec函数_Python3 exec 函数
Python3 exec 函数 描述 exec 执行储存在字符串或文件中的 Python 语句,相比于 eval,exec可以执行更复杂的 Python 代码. 语法 以下是 exec 的语法: ex ...
- linux:exec族函数, exec族函数配合fork使用,system 函数,popen 函数
1.exec族函数 精彩博文: https://blog.csdn.net/u014530704/article/details/73848573 path: 比如说 ./a.out ...
- linux exec 二程序,二十五、Linux 进程与信号---exec函数
25.1 介绍 在用 fork 函数创建子进程后,子进程往往要调用一种 exec 函数以执行另一个程序 当进程调用一种 exec 函数时,该进程完全由新程序代换,替换原有进程的正文,而新程序则从其 m ...
- linux基础知识——exec函数
1.exec函数 \qquadfork()函数在执行之后,父子进程其实还是执行同一个程序,不同的只是同一个程序的不同分支.如果要想让子进程执行另外一个不同的程序,这时候需要调用exec函数,这时候子进 ...
- linux 进程函数替换,Linux使用exec函数实现进程替换的代码分享
这篇文章主要介绍了Linux 进程替换(exec函数)实现代码的相关资料,需要的朋友可以参考下 Linux 进程替换(exec函数)实现代码# include #include #include #i ...
- Linux 高并发学习笔记 - exec 函数簇重载进程
2.2.4 exec 函数簇重载进程 Linux 高并发学习笔记 - 笔记索引 execl.execlp.execle.execv.execvp.execvpe exec函数簇将重载进程,直接覆盖当前 ...
- Linux exec 系列函数:execl execv等
Linux exec 系列函数:execl execv等 1. exec函数族 1.1 exec 重要说明!!! 1.2 使用exec函数族主要有两种情况: 2. exec函数族共有6种不同形式的函数 ...
- linux的exec函数
在用fork函数创建子进程后,子进程往往要调用一个exec函数以执行另一个程序 当进程调用一种exec函数时,该进程完全由新程序代换,而新程序则从其main函数开始执行.因为调用exec并不创建新进程 ...
最新文章
- 2000及2005通用分页
- 使用screen后台运行python(基于centOS7.2)
- ftp安装和虚拟用户创建(终于搞清楚了)
- 视频 | 在小程序竞争激烈的今天,淘票票如何脱颖而出?
- 如何查看python安装路径
- C/C++|Qt工作笔记-4种方法判断当前对象(类)名或标识(继承发,typeid法,元对象className()法,Q_CLASSINFO法)
- BZOJ2654/COGS1764 [2012国家集训队]tree(陈立杰) [生成树,二分]
- hash ruby 定义 嵌套_【译】rails的嵌套属性(Nested Attributes)使用
- eclipse没有server选项怎么解决
- java的null类型强转
- JavaScript String 对象、Math 对象使用详解
- Pandas一键爬取解析代理IP与代理IP池的维护
- ubuntu16.04查看opencv版本
- Ubuntu修改IP地址不生效解决办法
- xlsx文件怎么打开
- n维单位向量的生成公式
- 小红书数据平台:笔记爆文率提升的三大秘诀公式!
- C语言实现简易日历(附源码)
- 2019java 开发工程师 最新面试官 问的问题
- Synology NAS群晖DS218play 运行内存测试