| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> Linux 进程—族函数、system、popen -> 正文阅读 |
|
[系统运维]Linux 进程—族函数、system、popen |
本文章为个人的学习笔记,其中有些知识点解释得不是那么的标准。 即本文章笔记可参考、可借鉴、可指点! 族函数在当前进程中或者当前程序中调用exec函数时,则会去执行族函数内另外的一个程序。当调用exec族函数时,当前进程或执行的程序就会被完全替换为族函数该执行的程序,而族函数的调用多用在创建新的进程时的调用。因为调用exec族函数并不创建新进程,所以前后进程的ID并没有改变。通过调用族函数去执行的程序时,执行文件既可以是二进制文件,也可以是任何Linux下可执行的脚本文件。
exec族函数执行成功后不会返回,且调用成功之后就会跳转至族函数里面的执行文件,而当前程序就不再继续执行;调用失败时,会设置errno并返回-1,然后从原程序的调用点接着往下执行。 参数: const char *path 为调用某执行文件的路径 const char *file?如果参数file中包含/,则就将其视为路径名,否则就按 PATH环境变量,在它所指定的各目录中搜寻该可执行文件。 const char *arg? 第一个为执行文件的名称,第二个为执行文件的附加名称,依次类推;eg:ls -l等。如果没有参数了就得亦NULL来结尾。 char *const argv[ ]?也为执行文件的名称等,和上面那个参数十一月的,但是该参数是用数组来表达了。 直接上代码对比吧 system函数 int system(const char *command); system函数与execl族函数的最大的区别是,system调用完成之后,依旧会执行当前程序后面的程序,而族函数就会直接跳转到另一个可执行的文件去了,当调用完成之后并不会继续执行当前函数剩余的程序。 调用system时,他是创建新的一个进程来实现的,在这个子进程中调用/bin/sh -c来执行command指定的命令;当sh -c如果不能执行,则返回127;如果调用失败,则返回-1.
popen 函数 原型
如果 type 为 r,那么调用进程读进 command 的标准输出。一般用 r 。 ?popen 是可以将执行的结果通过文件流读取出来,但是如果不读取操作的话,那终端也不会打印执行结果。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/28 20:22:54- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |