system函数与exec函数
文章目录
- system函数与exec函数
- system函数
- exec系列函数
system函数与exec函数
启动另一个新的进程
system函数
>> system函数的原型:
#include <stdlib.h>int system(const char *string);
>> system函数的作用:
运行一条命令并等待该命令的完成,该命令以字符串参数 ( const char *string ) 的形式传递给system函数。
这里需要注意的是等待命令的完成,指的是原程序调用system函数执行命令时是不会继续往下执行的,取而代之的是停在原地等待命令返回给它一个值(即命令程序的退出码)。
>> 函数的返回值:
若无法启动shell来运行该命令,则system将返回错误代码127;若出现其它错误则返回-1;正常调用返回该命令的退出码。
>> 示例:
//FILENAME: sysdemo.c
#include <stdlib.h>
#include <stdio.h>int main(int argc, char **argv)
{printf("Running 'top' and waiting for it to return.\n");system("top");printf("Done.\n");return 0;
}
* 注:top命令按 ‘q’ 可退出, top退出后原进程将继续执行剩余指令。
exec系列函数
exec系列的函数同样可以启动一个新的进程,但它与system并不同:
- system需要先启动一个shell才能运行指定的命令
- 调用system函数执行指定命令时,原进程会暂停等待,之后再继续运行
- 调用exec函数开启新进程后,原进程将被直接关闭
>> exec系列函数的原型如下:
#include <unistd.h>char **environ;int execl(const char *path, const char *arg0, ..., (char *)0);
int execlp(const char *file, const char *arg0, ..., (char *)0);
int execle(const char *path, const char *arg0, ..., (char *)0, char *const envp[]);
int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);
int execve(const char *path, char *const argv[], char *const envp[]);
总结一下几个函数的区别:
- 以p结尾的两个函数通过搜索环境变量$PATH来查找要启动的程序的路径,如果$PATH中没有,则必须以绝对路径作为const char *path参数。
- 前三个函数的参数个数是可变的,其中可变的部分作为新程序的参数(和传递给main函数的argv参数是一个意思)。可变部分后面必须跟一个空指针。
- execle函数和execve函数可以接收一个名为envp的参数,通过它可以传递字符数组作为新程序的环境变量。
- 全局变量environ可以用来将一个值传递给新的程序环境中。
system函数与exec函数相关推荐
- Linux---fork函数和exec函数
这里主要介绍Unix/Linux中进程创建,fork()函数和exec()函数. 这里先介绍一下什么是进程: 进程是正在执行的程序的一个实例.每个实例都有自己的地址空间和执行状态.当操作系统给内核数据 ...
- system函数 与 exec函数的区别
exec家族一共有六个函数,分别是:(1)int execl(const char *path, const char *arg, ......);(2)int execle(const char * ...
- python exec函数_Python3 exec 函数
Python3 exec 函数 描述 exec 执行储存在字符串或文件中的 Python 语句,相比于 eval,exec可以执行更复杂的 Python 代码. 语法 以下是 exec 的语法: ex ...
- python中exec函数_python exec函数怎么用?
我们在写编程的过程中,会发现,代码会越来越复杂.为了能出现自己想要的内容,程序越写越长,越写越复杂,也越来越难让自己看懂.其实呀,这是不可避免的.但是在python中,有帮助我们执行复杂的python ...
- Linux 高并发学习笔记 - exec 函数簇重载进程
2.2.4 exec 函数簇重载进程 Linux 高并发学习笔记 - 笔记索引 execl.execlp.execle.execv.execvp.execvpe exec函数簇将重载进程,直接覆盖当前 ...
- Python的exec函数
exec函数介绍 exec函数是Python中的自带函数,与eval相比,有着更大的优越性.例如eval函数只能执行计算数学表达式的结果,exec能执行一句或一段Python代码. exec函数功能 ...
- exec族函数、system函数、popen函数、PATH
exec族函数函数的作用: 我们用fork函数创建新进程后,经常会在新进程中调用exec函数去执行另外一个程序.当进程调用exec函数时,该进程被完全替换为新程序(在exec都后面的代码不会被得到执行 ...
- 8.10 exec函数
8.10 exec函数 用fork函数创建子进程后,子进程往往要调用一种exec函数以执行另一个程序.当进程调用一种exec函数时,该进程完全由新程序代换,而新程序则从其m a i n函数开始执行.因 ...
- linux exec 二程序,二十五、Linux 进程与信号---exec函数
25.1 介绍 在用 fork 函数创建子进程后,子进程往往要调用一种 exec 函数以执行另一个程序 当进程调用一种 exec 函数时,该进程完全由新程序代换,替换原有进程的正文,而新程序则从其 m ...
最新文章
- 点云及三维图像处理综述
- 红米ac2100有ipv6吗_#年末#白里透红,跑得相当快,红米AC2100体验
- Windows Mobile下使用CppUnitLite输出测试结果
- 使用CoreRT将.NET Core发布为Native应用程序
- HTML5网络科技企业网页模板
- post请求html405,nginx静态文件响应post请求,405 Not Allowed
- shell脚本文件中ll提示找不到命令
- js jquery select 操作 获取值,选中选项,增加,修改,删除
- 项目验收文档模板(三)
- isv支付宝小程序三方模板开发快速指南
- 问题1:编译内核出现错误‘debian/stamp/build/kernel‘及解决方案
- vue设置页面取消滚动和可以滚动
- Python小例子 | 如何将多张图片合成mp4视频格式,并加入背景音乐...
- 精美摘抄,献给每一位喜欢文学的人
- yyyy-MM-dd HH:mm:ss时间格式化,有的大写有的小写,大小写的含义说明
- WPS新建文字分享微信.docx形式_高效神器:花 5 分钟输入文字,就能自动变成 PPT...
- rono在oracle的作用_细节见真章,OPPO Reno多项品质测试,这才是最真实表现
- html5 css3舞台灯光,HTML5特效库 CSS3 实现灯光照射显示文字动画源码
- Java核心技术----枚举类型与泛型
- ThinkPHP3.2 框架sql注入漏洞分析(2018-08-23)