当前位置: 首页 > news >正文

2023-09-11 C语言popen( )函数调用其他进程返回值 ( C知道辅助编写 )


老林的C语言新课, 想快速入门点此 <C 语言编程核心突破>


C语言popen函数调用其他进程返回值

  • 前言
  • 一、popen( ) 函数原型
  • 二、使用示例 (C 知道提供)
  • 总结


前言

当我们想用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( ) 函数.

二、使用示例 (C 知道提供)

以下代码在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;
}

总结

我在2022-12-11 Windows下如何用C/C++获取cpu数量和物理核数文章中, 使用了 popen( ) 函数调用 wmic cpu get 命令, 并将其输出传入程序, 判读电脑cpu属性.

虽然C语言课本不会介绍这个标准库函数, 但既然这么有用, 还是掌握一下.


老林的C语言新课, 想快速入门点此 <C 语言编程核心突破>


http://www.lryc.cn/news/164551.html

相关文章:

  • SSTables和LSM-Tree
  • 深圳神秘顾客(SMS)公司开展湖南长沙湘菜神秘顾客调查
  • Logback日志记录只在控制台输出sql,未写入日志文件【解决】
  • 神仙院校!评级A+,每年招生1000+!
  • OpenHarmony:如何使用HDF驱动控制LED灯
  • 怎么在图片上编辑文字?这几种图片编辑工具了解下
  • 直播进入新风口:XR虚拟直播市场火爆,未来发展势不可挡
  • 安装 paddlepaddle paddleocr库,避坑指南
  • Java调用ChatGPT的API接口实现对话与图片生成
  • h5开发网站-css实现页面的背景固定定位
  • SpringBoot整合Redis完整篇
  • 花见Live Wallpaper Themes 4K Pro for mac(4k视频壁纸)
  • FastJson 漏洞复现
  • jeesite实现excel导入功能(保姆级图文教程)
  • 【B树 B+树】B树、B+树理论
  • CRM软件系统能否监控手机的使用
  • hutool的HttpRequest.post的使用-包括上传文档等多个传参【总结版本】
  • VR数字工厂,为企业工厂打造竞争新优势
  • 记一次线程堵塞(挂起)导致消息队列积压
  • 被问实习最大的收获是什么可以怎么回答?
  • 如何理解图神经网络的傅里叶变换和图卷积
  • 国家网络安全周2023时间是什么时候?有什么特点?谁举办的?
  • windows编程之线程同步万字总结(创建线程,互斥对象,互斥事件,信号量,关键段,多线程群聊服务器)
  • Git在已有的项目中引入Submodule子模块管理:添加、更新、删除(实战示例代码)
  • 内网穿透实现Windows远程桌面访问Ubuntu,简单高效的远程桌面解决方案
  • 如何学习运营管理
  • 腾讯云centos7.6安装部署备忘
  • 【赠书活动】考研备考书单推荐
  • 中缀表达式 - 栈实现综合计算器
  • html语音播报功能问题