c程序-popen调用shell指令

这篇具有很好参考价值的文章主要介绍了c程序-popen调用shell指令。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、popen和pclose函数介绍

文章 <Linux 笔记--system 函数执行shell指令>,介绍了 system 函数执行shell 指令。但是 system 函数只能获取到shell命令的返回值,而不能获取shell命令的输出结果。

这篇文章将介绍 popen 和 pclose 函数,通过调用 popen 函数来调用 shell 指令,可以获取shell命令的输出信息或者与执行的指令进行交互。 

看下 popen 函数介绍:

The  popen()  function opens a process by creating a pipe, forking, and invoking the shell.  

函数头文件:

#include <stdio.h>

函数原型:

FILE *popen(const char *command, const char *type);


int pclose(FILE *stream);

描述:

The  popen()  function opens a process by creating a pipe, forking, and
invoking the shell.  Since a pipe is by definition unidirectional,  the
type  argument  may  specify  only  reading  or  writing, not both; the
resulting stream is correspondingly read-only or write-only.

二、测试代码

popen 和 pclose 需成对使用。popen 第二个参数为 "r" 和 "w"

功能 使用 ifconfig 指令获取返回的网卡信息并打印,测试代码如下:

#include <stdio.h>  
#include <string.h>  


int main(int argc,char*argv[])
{  
    FILE *fstream=NULL;    
    char buff[1024];  
    memset(buff,0,sizeof(buff));  
    if(NULL==(fstream=popen("ifconfig","r"))) // ifconfig 指令   
    {   
            fprintf(stderr,"execute command failed: %s",strerror(perror));    
            return -1;    
    }   
    printf("%s\r\n","haha-start");  
    while(NULL!=fgets(buff, sizeof(buff), fstream)) // 获取 ifconfig 指令返回的数据信息
    {
            printf("%s",buff);  
    }
    printf("%s\r\n","haha-end");  
    pclose(fstream);  // 关闭
    return 0;   
}

三、测试结果

编译执行,测试结果如下:

c程序-popen调用shell指令,c语言,开发语言

可以看到执行了 ifconfig 指令,并且正确获取到了返回数据结果。
文章来源地址https://www.toymoban.com/news/detail-767320.html

到了这里,关于c程序-popen调用shell指令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • subprocess.Popen执行程序以及关闭进程

    python中有一个很好用的方式来开启进程,即 subprocess.Popen 正常来说,如果 subprocess.Popen 要执行的脚本是一个死循环的脚本,那么我们就需要手动的来关闭这个脚本,而无法等待这个脚本自己结束。 但是这个 subprocess.Popen 在关闭脚本进程时有一个坑。 举例说明: python cmd= “

    2024年02月13日
    浏览(36)
  • Java进程ProcessBuilder类的介绍及使用,ProcessBuilder调用外部程序执行shell命令Linux命令

    目录 ProcessBuilder类的介绍及使用 【前言】 【正文】 --构造方法-- --常用方法-- --使用技巧-- --调用本地Shell命令,实例-- 【总结】 【注意】         在做一个项目的时候需要用到运行时动态执行JAVA命令,一开始的思路是运行时生成bat脚本,然后通过Runtime类的exec方法之行

    2024年02月09日
    浏览(43)
  • 【Linux】操作系统的基本概念 {冯诺依曼体系结构,操作系统的基本概念,系统调用及用户操作接口,shell程序}

    现代计算机设计大都遵守冯·诺依曼体系结构: 截至目前,我们所认识的计算机,都是由一个个的硬件组件组成 输入单元:包括键盘, 鼠标,扫描仪, 磁盘,网卡等 存储器: 内存(提高数据读写速度,降低硬件成本) 中央处理器(CPU):含有运算器(算数运算,逻辑运算)和控

    2024年02月11日
    浏览(52)
  • 微信小程序 开发开发工具接口调用成功,真机调试接口调用失败

    问题:微信小程序中 开发开发工具接口调用成功,真机调试接口调用失败 个人遇到的问题原因:证书有问题 找到的证书测试 1、 由于系统限制,不同平台对证书要求的严格程度不同。为了保证小程序的兼容性,建议开发者按照最高标准配置证书,并使用相关工具检查现有证书

    2024年02月13日
    浏览(55)
  • shell指令练习

    一、使用cut截取出Ubuntu用户的家目录,要求:不能使用\\\":\\\"作为分割

    2024年02月09日
    浏览(31)
  • Shell常用的指令

    Shell 常用的指令 常用的指令 重定向输入输出 : --stdin 输入: 输出: –stdin 表示追加 , 表示覆盖内容 管道: | 将前面命令的执行结果,作为后面命令的输入。 逻辑与 : 连接命令, 当前前面的命令执行完成后继续执行后面的指令,如果前面的命令执行失败,则后面的命令不执

    2024年02月08日
    浏览(26)
  • Linux Shell指令

            Shell 是一种用于管理和执行计算机命令的程序,它既可以被视为命令语言,也可以被视为解释性编程语言。Shell 是用户和操作系统之间的桥梁,它允许用户使用简单的命令来操作计算机。Shell 程序通常由一个命令解释器和一个文件管理器组成,用户可以通过命令行

    2024年02月15日
    浏览(25)
  • Shell脚本学习记录(常见指令)

    Shell 的 echo 指令与 PHP 的 echo 指令类似,都是用于字符串的输出。命令格式: 1.显示普通字符串: 2.显示转义字符 3.显示变量 read 命令(类似C语言的scanf)从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量 4.显示换行   5.显示不换行 6.显示结果定向至文件   7.原样

    2024年02月08日
    浏览(39)
  • Android 代码执行shell指令

    Android 执行shell指令 方式一:此方式如果执行的代码带echo开头,会没有作用。可能是echo这个指令会被优先执行。     public static void executeCommand(String command) {         Runtime mRuntime = Runtime.getRuntime();         try {             //Process中封装了返回的结果和执行错误的结果    

    2024年02月15日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包