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( )函数调用的资料请关注脚本之家其它相关文章!

相关文章

  • 详解基于Matlab的空心散点检测

    详解基于Matlab的空心散点检测

    这篇文章主要介绍了如何利用Matlab实现空心散点检测,文中的示例代码讲解详细,对我们学习Matlab有一定的帮助,感兴趣的可以跟随小编了解一下
    2022-02-02
  • C++多线程编程简单实例

    C++多线程编程简单实例

    本文给大家分享的是C++多线程编程简单实例,由于C++本身没有多线程机制,在windows下我们使用调用SDK win32 api来实现,示例都很简单,讲解的也很详细,推荐给大家。
    2015-03-03
  • sigsetjmp的用法总结

    sigsetjmp的用法总结

    sigsetjmp()会保存目前堆栈环境,然后将目前的地址作一个记号,而在程序其他地方调用siglongjmp()时便会直接跳到这个记号位置,然后还原堆栈,继续程序的执行
    2013-09-09
  • C++实现strcpy函数实例

    C++实现strcpy函数实例

    这篇文章主要介绍了C++实现strcpy函数实例,步骤讲解的很详细,对大家的学习或工作具有一定的参考借鉴价值,感兴趣的朋友跟随小编一起来研究吧
    2020-12-12
  • C++实现大整数乘法

    C++实现大整数乘法

    这篇文章主要为大家详细介绍了C++实现大整数乘法,使用笛卡尔相乘,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • C++实现stack与queue数据结构的模拟

    C++实现stack与queue数据结构的模拟

    stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行 元素的插入与提取操作;队列是一种容器适配器,专门用于在FIFO上下文(先进先出)中操作,其中从容器一端插入元素,另一端提取元素
    2023-04-04
  • C语言实现飞机订票系统的完整代码

    C语言实现飞机订票系统的完整代码

    为了免去在窗口排队买票的麻烦,飞机订票系统应运而生,下面这篇文章主要给大家介绍了关于C语言实现飞机订票系统的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • C语言从strcpy到自定义字符串处理函数的原理解析

    C语言从strcpy到自定义字符串处理函数的原理解析

    这篇文章主要介绍了C语言从strcpy到自定义字符串处理函数的相关资料,本文将从常见的字符串函数(如strcpy、strcat)入手,逐步深入探讨字符串操作的核心原理,并引导你实现自定义字符串处理函数,感兴趣的朋友一起看看吧
    2025-05-05
  • C语言实现时间戳转日期的算法(推荐)

    C语言实现时间戳转日期的算法(推荐)

    下面小编就为大家带来一篇C语言实现时间戳转日期的算法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • Matlab计算变异函数并绘制经验半方差图详解

    Matlab计算变异函数并绘制经验半方差图详解

    这篇文章主要为大家详细介绍了基于MATLAB求取空间数据的变异函数,并绘制经验半方差图的方法。文中的示例代码讲解详细,感兴趣的可以了解一下
    2023-04-04

最新评论