C语言popen函数调用其他进程返回值示例详解

 更新时间:2023年09月12日 10:29:31   作者:不停感叹的老林  
这篇文章主要为大家介绍了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( )函数调用的资料请关注脚本之家其它相关文章!

相关文章

  • C语言自动生成enum值和名字映射代码

    C语言自动生成enum值和名字映射代码

    这篇文章主要介绍了C语言自动生成enum值和名字映射代码的相关资料,需要的朋友可以参考下
    2015-12-12
  • Objective-C中常用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect实例分析

    Objective-C中常用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect实例分析

    这篇文章主要介绍了Objective-C中常用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect实例分析,有助于更加直观的理解Object-C常用的结构体,需要的朋友可以参考下
    2014-07-07
  • C++中int类型按字节打印输出的方法

    C++中int类型按字节打印输出的方法

    这篇文章主要给大家介绍了关于C++中int类型按字节打印输出的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C++具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • C语言单值二叉树真题讲解

    C语言单值二叉树真题讲解

    单值二叉树你可能之前没见过,如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树,让我们通过一个真题来深刻了解它吧
    2022-04-04
  • C/C++的内存管理你了解嘛

    C/C++的内存管理你了解嘛

    这篇文章主要为大家介绍了C/C++的内存管理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • VScode上配置 c语言环境的图文教程

    VScode上配置 c语言环境的图文教程

    这篇文章主要介绍了配置VScode c语言环境,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • linux安装mysql和使用c语言操作数据库的方法 c语言连接mysql

    linux安装mysql和使用c语言操作数据库的方法 c语言连接mysql

    Linux下使用C语言操作数据库的方法,我将从MySQL环境的搭建,MySQL命令的使用到使用C接口来操作MySQL等过程详细的介绍在Linux下管理MySQL数据库的方法
    2014-01-01
  • C语言rand和srand函数使用方法介绍

    C语言rand和srand函数使用方法介绍

    rand()函数用来产生随机数,但是,rand()的内部实现是用线性同余法实现的,是伪随机数,由于周期较长,因此在一定范围内可以看成是随机的。srand()用来设置rand()产生随机数时的随机数种子。参数seed是整数,通常可以利用time(0)或geypid(0)的返回值作为seed
    2023-02-02
  • Visual Studio Code 从简介、安装到配置所需插件详细介绍

    Visual Studio Code 从简介、安装到配置所需插件详细介绍

    这篇文章给大家介绍到vs与vs code的区别,并且会详细介绍vscode的安装步骤,和我所了解过的插件配置,感兴趣的朋友跟随小编一起看看吧
    2020-03-03
  • 利用C语言的Cairo图形库绘制太极图实例教程

    利用C语言的Cairo图形库绘制太极图实例教程

    这几天都在研究Cairo图形库,这是一个开源跨平台的图形库,相对于OpenGL来说更容易上手使用。这篇文章是利用C语言的Cairo图形库绘制了一个太极图,对大家学习Cairo图形库具有一定的参考借鉴价值,下面来一起看看吧。
    2016-12-12

最新评论