Linux---popen函数
引言:提到system函数,就不得不提到popen函数,根据system函数的源代码:system函数的执行需要通过调用fork()函数创建一个子进程,子进程通过execl函数调用shell对传参的可执行文件进行实现。这也意味着system函数实现需要依赖execl函数实现自身功能。因此system函数的结果将直接显示在终端上,这样原本运行的结果就无法保存在文件中用于实现信息交互等功能。
NAMEpopen, pclose - pipe stream to or from a processSYNOPSIS#include <stdio.h>FILE *popen(const char *command, const char *type);int pclose(FILE *stream);
popen函数比system在实际应用中的好处:可以获得运行的输出结果。
作用:创建一个连接到另一个进程的管道,然后读其输出或向其输入端发送数据。
原理:创建一个管道,fork一个子进程,关闭未使用的管道端(读端或者写端),执行一个shell运行命令,然后等待命令终止。
参数说明:
commmand:是一个指向以 NULL 结束的 shell 命令字符串的指针。这行命令将被传到 bin/sh 并使用 -c 标志,shell 将执行这个命令。
type:只能是读和写的一种,如果是 “r” 则文件指针连接到command的标准输出,则返回的文件指针是可读的;如果是 “w” 则文件指针连接到command的标准输入,则返回的文件指针是可写的。
stream:popen返回的文件指针。
函数的实现:
#include <stdio.h>int main()
{FILE *File;char readBuf[1024] = {0};File = popen("ls","r");fread(readBuf,1024,1,File);printf("%s\n",readBuf);return 0;
}
结果:
如果没有上述打印的内容,实验结果将毫无现象。因此可以通过popen函数读入信息,通过网络的方式发送从而实现多机通信。
pclose函数则用于关闭标准I/O流。如果使用popen函数在 “w” 模式下,则可以继续往标准I/O流中写入内容,直到调用pclose关闭它。
Linux---popen函数相关推荐
- linux popen 函数,Linux下使用popen()执行shell命令
函数原型: #include "stdio.h" FILE popen( const char command, const char* mode ) 参数说明: command: ...
- Linux popen函数的使用总结
函数原型: #include "stdio.h" FILE *popen( const char* command, const char* mode ) 参数说明: comman ...
- linux:exec族函数, exec族函数配合fork使用,system 函数,popen 函数
1.exec族函数 精彩博文: https://blog.csdn.net/u014530704/article/details/73848573 path: 比如说 ./a.out ...
- Linux进程编程(PS: exec族函数、system、popen函数)
目录 1.进程相关概念 程序和进程 查看系统中的进程 ps指令 top指令 进程标识符 使用getpid()获取 父进程,子进程 2.创建进程fork 进程创建发生了什么--C程序的存储空间如何分配 ...
- Linux中popen函数的作用小结
概述 popen()函数通过创建一个管道,调用fork()产生一个子进程,执行一个shell以运行命令来开启一个进程.这篇文章重点给大家介绍Linux中popen函数的作用,感兴趣的朋友一起看看吧 p ...
- linux中popen函数,system函数与popen函数
为了更好的理解system()函数返回值,需要了解其执行过程,实际上system()函数执行了三步操作: fork一个子进程: 在子进程中调用exec函数去执行command: 在父进程中调用wait ...
- Linux C popen函数返回Shell命令执行结果
1.popen() popen():进程I/O函数,与pclose函数一起使用. 1.1函数定义: FILE * popen ( const char * command , const char * ...
- python的popen函数
最近了解了一下python的popen函数的使用,主要是用来执行linux命令 函数使用 使用之前需要导入import os模块 使用方式: os.popen(cmd) 返回值: 返回一个文件句柄 i ...
- exec族函数、system函数、popen函数、PATH
exec族函数函数的作用: 我们用fork函数创建新进程后,经常会在新进程中调用exec函数去执行另外一个程序.当进程调用exec函数时,该进程被完全替换为新程序(在exec都后面的代码不会被得到执行 ...
- linux c语言内核函数手册,Linux C函数实例速查手册
函数学习目录: 第1章 初级I/O函数 1.1 close函数:关闭已经打开的文件 1.2 creat函数:创建一个文件 1.3 dup函数:复制文件描述符 1.4 dup2函数:复制文件描述符到指定 ...
最新文章
- Linux vsftp服务
- Linux学习总结(7)——阿里云centeros服务器上安装 jdk,tomcat,mysql
- 软工实践第三次作业-原型设计
- win10系统中环境变量path变成一行显示(配置环境)
- 【十二省联考2019】异或粽子【01Trie】【堆】【前k大套路】
- Django学习笔记《一》图书管理系统项目挂载到阿里云
- 引入外部js如何通知页面其编码格式
- java 查看虚拟机状态_深入理解java虚拟机学习笔记(四)虚拟机性能监控与故障处理工具...
- 源码分析Dubbo服务注册与发现机制RegistryDirectory)
- 【java】为什么 HashMap 的加载因子是0.75?
- 基于RRT算法的路径规划实现(matlab)
- 基于Python的热门音乐特征数据分析
- was mutated while being enumerated
- 如今网络技术日新月异,网络架构师们又如何演变?
- SQL注入之order by注入与limit注入
- 西山居工作室十周年回顾——产品篇
- c++获取计算机注册码,在c++中,如何能获得计算机的机器码?
- 百度云盘搜索助手 V1.2(可查询提取码,带5个搜索引擎)
- 思维导图–云笔记测试的利器(转)
- 对比腾讯、163、商务密邮、360加密邮,发加密邮件用哪个更好