返回顶部
首页 > 资讯 > 操作系统 >如何在Linux中使用popen函数
  • 793
分享到

如何在Linux中使用popen函数

2023-06-09 14:06:41 793人浏览 薄情痞子
摘要

如何在linux中使用popen函数?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。函数定义#include <stdio.h>FILE *&

如何在linux中使用popen函数?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

函数定义

#include <stdio.h>FILE * popen(const char *command , const char *type );int pclose(FILE *stream);

函数说明

  popen()函数通过创建一个管道,调用fork()产生一个子进程,执行一个shell以运行命令来开启一个进程。这个管道必须由pclose()函数关闭,而不是fclose()函数。pclose()函数关闭标准I/O流,等待命令执行结束,然后返回shell的终止状态。如果shell不能被执行,则pclose()返回的终止状态与shell已执行exit一样。

  type参数只能是读或者写中的一种,得到的返回值(标准I/O流)也具有和type相应的只读或只写类型。如果type是"r"则文件指针连接到command的标准输出;如果type是"w"则文件指针连接到command的标准输入。

  command参数是一个指向以NULL结束的shell命令字符串的指针。这行命令将被传到bin/sh并使用-c标志,shell将执行这个命令。

  popen()的返回值是个标准I/O流,必须由pclose来终止。前面提到这个流是单向的(只能用于读或写)。向这个流写内容相当于写入该命令的标准输入,命令的标准输出和调用popen()的进程相同;与之相反的,从流中读数据相当于读取命令的标准输出,命令的标准输入和调用popen()的进程相同。

返回值

  如果调用fork()或pipe()失败,或者不能分配内存将返回NULL,否则返回标准I/O流。popen()没有为内存分配失败设置errno值。如果调用fork()或pipe()时出现错误,errno被设为相应的错误类型。如果type参数不合法,errno将返回EINVAL。

函数原型:

 #include “stdio.h”  FILE *popen( const char *command, const char* mode )    int pclose(FILE *stream_to_close);

参数说明:

  command: 是一个指向以 NULL 结束的 shell 命令字符串的指针。这行命令将被传到 bin/sh 并使用 -c 标志,shell 将执行这个命令。

  mode: 只能是读或者写中的一种,得到的返回值(标准 I/O 流)也具有和 type 相应的只读或只写类型。如果 type 是 “r” 则文件指针连接到 command 的标准输出;如果 type 是 “w” 则文件指针连接到 command 的标准输入。

作用:

    popen函数允许一个程序将另外一个程序作为新进程来启动,并可以传递数据或者通过它接受数据。

    其内部实现为调用 fork 产生一个子进程,执行一个 shell, 以运行命令来开启一个进程,这个进程必须由 pclose() 函数关闭。

缺点:

    使用popen的不好影响是,针对每个popen调用,不仅要启动一个被请求的程序,还要启动一个shell,即每个popen调用将多启动两个进程。

 举例:

#include<stdio.h>   #include<unistd.h>   #include<string.h>     int main()   {     FILE *fp=NULL;     FILE *fh=NULL;     char buff[128]={0};      memset(buff,0,sizeof(buff));    fp=popen("ls -l","r");//将命令ls-l 同过管道读到fp    fh=fopen("shell.c","w+");// 创建一个可写的文件    fread(buff,1,127,fp);//将fp的数据流读到buff中    fwrite(buff,1,127,fh);//将buff的数据写入fh指向的文件中      pclose(fp);    fclose(fh);      return 0;      } ~

 运行结果:

[lol@localhost practice]$ lspopen popen.c shell.c[lol@localhost practice]$ cat shell.ctotal 12-rwxrwxr-x. 1 lol lol 5478 May 24 15:39 popen-rw-rw-r--. 1 lol lol 473 May 24 15:39 popen.c-rw-rw-r--. 1 lol lol  [lol@localhost practice]$ vim popen.c[lol@localhost practice]$

关于如何在Linux中使用popen函数问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网操作系统频道了解更多相关知识。

--结束END--

本文标题: 如何在Linux中使用popen函数

本文链接: https://lsjlt.com/news/256381.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何在Linux中使用popen函数
    如何在Linux中使用popen函数?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。函数定义#include <stdio.h>FILE *&...
    99+
    2023-06-09
  • Linux中popen函数的作用小结
    简单说一下popen()函数 函数定义 #include <stdio.h> FILE * popen(const char *command , const char *type ); int pclo...
    99+
    2022-06-04
    linux probe函数作用 linux probe函数
  • python中popen函数怎么用
    这篇文章主要为大家展示了“python中popen函数怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python中popen函数怎么用”这篇文章吧。pop...
    99+
    2024-04-02
  • php popen()函数的使用方法
    这篇文章主要讲解了“php popen()函数的使用方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php popen()函数的使用方法”吧!在php中,内置函数popen()可以打开进程...
    99+
    2023-06-20
  • 如何在linux 中使用open()函数
    本篇文章给大家分享的是有关如何在linux 中使用open()函数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。open()函数创建文件时便捷的权限设置头文件#include&...
    99+
    2023-06-09
  • 如何在Linux 中使用getcwd()函数
    这期内容当中小编将会给大家带来有关如何在Linux 中使用getcwd()函数,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。#include<unistd.h>char *getcw...
    99+
    2023-06-09
  • 如何在linux中使用awk函数
    如何在linux中使用awk函数 ?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、算术函数:以下算术函数执行与 C 语言中名称相同的子例程相同的操作:函数名说明atan2( ...
    99+
    2023-06-13
  • 如何在linux中使用shell函数式
    这篇文章将为大家详细讲解有关如何在linux中使用shell函数式,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。循环找各个程序目录里面的所有配置文件内容 #循环处理行的函数,参数为要处理的文...
    99+
    2023-06-13
  • linux如何在脚本中使用函数
    这篇文章主要介绍了linux如何在脚本中使用函数,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在脚本中使用函数除了非常小的脚本(只有几行代码),总是记得用函数来使代码模块化且...
    99+
    2023-06-27
  • 如何在 Linux 中使用 Python 函数处理数组?
    作为一名开发者,在 Linux 系统中使用 Python 处理数组是一项非常重要的技能。Python 是一种非常流行的编程语言,它具有很强的数据分析和处理能力,可以轻松地处理各种类型的数据,包括数组。本文将介绍如何在 Linux 中使用 P...
    99+
    2023-07-20
    函数 linux 数组
  • Linux中itoa函数如何使用
    这篇文章将为大家详细讲解有关Linux中itoa函数如何使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。linux需要itoa函数,下面我就提供一份跨平台的itoa函数。//return ...
    99+
    2023-06-16
  • 如何在 PHP 中使用 Linux 系统的数组函数?
    PHP 是一种非常流行的编程语言,而 Linux 系统则是一种非常流行的操作系统。在 PHP 中,我们可以使用 Linux 系统的数组函数来更好地管理和操作数据。在本文中,我们将介绍如何在 PHP 中使用 Linux 系统的数组函数。 一...
    99+
    2023-06-18
    linux 数组 npm
  • 如何在Lua中使用函数
    本篇内容介绍了“如何在Lua中使用函数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 函数的使用例e0...
    99+
    2024-04-02
  • 如何在shell中使用函数
    这篇文章给大家介绍如何在shell中使用函数,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。#!/bin/sh# Library test script. library.shin...
    99+
    2023-06-09
  • Python 函数中如何使用 Linux 数组?
    在 Linux 系统中,数组是一种非常常见的数据类型。它可以用来存储一系列相关的元素,并且可以轻松地对这些元素进行操作。在 Python 函数中,使用 Linux 数组可以让我们更方便地操作和处理数据。 在本文中,我们将探讨如何在 Pyt...
    99+
    2023-07-20
    函数 linux 数组
  • 如何在Python函数中使用Linux重定向命令?
    在Python编程中,使用Linux重定向命令可以让我们更加高效地处理文本数据。重定向命令的作用是将命令的输出结果重定向到一个文件中,或者将文件中的内容作为输入传递给命令。在Python中,我们可以使用subprocess模块来调用Linu...
    99+
    2023-07-10
    函数 linux 重定向
  • Mysql中函数如何在dm中使用
    这篇文章主要介绍Mysql中函数如何在dm中使用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、问题1、mysql中存在FIND_IN_SET函数,但是在dm中是不存在的。解决办法...
    99+
    2024-04-02
  • 在PHP中如何使用mysqli_query()函数
    这篇文章运用简单易懂的例子给大家介绍在PHP中如何使用mysqli_query()函数,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。首先,用PHP编码,我有以下mySQL表:CREAT...
    99+
    2024-04-02
  • Contains 函数如何在Oracle 中使用
    本篇文章为大家展示了Contains 函数如何在Oracle 中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1. 查询住址在北京的学生SELECT&n...
    99+
    2024-04-02
  • 如何在MySql中使用Date函数
    这期内容当中小编将会给大家带来有关如何在MySql中使用Date函数,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。NOW()   返回当前的日期和时间...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作