C语言popen函数调用其他进程返回值示例详解
前言
当我们想用C语言调用一个现有程序, 并且想获取程序返回值而不是在终端输出, 那么就必须调用popen( )
函数了.
popen( )
会创建一个管道, 并启动新进程, 通过管道进行进程间通信。popen( )
返回一个文件指针,类似fopen( )
, 只不过打开的不是文件, 文件指针用来读取或写入子进程的输入/输出。
popen( )
函数有两种模式:读模式r
和写模式w
。在读模式下,从子进程的输出中读取数据;在写模式下,将数据写入子进程的输入。
一、popen( ) 函数原型
popen( )
在标准库<stdio.h>
中的函数原型: man文档
#include <stdio.h> FILE *popen(const char *command, const char *type); int pclose(FILE *stream);
文件指针需要被回收, 用pclose( )
函数.
二、使用示例 (AI提供)
以下代码在Linux和Windows下都可以用, ls -l
是一个Linux命令, 用于显示指定工作目录下之内容(列出目前工作目录所含的文件及子目录)。
#include <stdio.h> int main() { FILE *fp; char buffer[1024]; // 执行命令并读取输出 fp = popen("ls -l", "r"); if (fp == NULL) { printf("无法执行命令\n"); return 1; } // 读取输出并打印 while (fgets(buffer, sizeof(buffer), fp) != NULL) { printf("%s", buffer); } // 关闭文件指针 pclose(fp); return 0; }
总结
我在一篇文章中, 使用了 popen( )
函数调用 wmic cpu get
命令, 并将其输出传入程序, 判读电脑cpu属性.
虽然C语言课本不会介绍这个标准库函数, 但既然这么有用, 还是掌握一下.
以上就是C语言popen( )函数调用其他进程返回值的详细内容,更多关于C语言popen( )函数调用的资料请关注脚本之家其它相关文章!
相关文章
Objective-C中常用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect实例分析
这篇文章主要介绍了Objective-C中常用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect实例分析,有助于更加直观的理解Object-C常用的结构体,需要的朋友可以参考下2014-07-07linux安装mysql和使用c语言操作数据库的方法 c语言连接mysql
Linux下使用C语言操作数据库的方法,我将从MySQL环境的搭建,MySQL命令的使用到使用C接口来操作MySQL等过程详细的介绍在Linux下管理MySQL数据库的方法2014-01-01Visual Studio Code 从简介、安装到配置所需插件详细介绍
这篇文章给大家介绍到vs与vs code的区别,并且会详细介绍vscode的安装步骤,和我所了解过的插件配置,感兴趣的朋友跟随小编一起看看吧2020-03-03
最新评论