`
bcyy
  • 浏览: 1824665 次
文章分类
社区版块
存档分类
最新评论

Popen函数

 
阅读更多
进程I/O函数,与pclose函数一起使用。

头文件

  #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。

示例:

            snprintf(cmd, sizeof(cmd) - 1, "/bin/ping -c 5 -w 15 %s",“www.baidu.com");

            fp = popen(cmd, "r");
            if (fp == NULL) {
                // what's wrong?
                break;
            }


分享到:
评论

相关推荐

    Linux系统中popen函数的缺陷与改造方案.pdf

    Linux系统中popen函数的缺陷与改造方案.pdf

    linux popen函数

    linux popen函数linux popen函数linux popen函数linux popen函数

    Linux中popen函数的作用小结

    popen()函数通过创建一个管道,调用fork()产生一个子进程,执行一个shell以运行命令来开启一个进程。这篇文章重点给大家介绍Linux中popen函数的作用,感兴趣的朋友一起看看吧

    python基础教程之popen函数操作其它程序的输入和输出示例

    popen函数允许一个程序将另一个程序作为新进程启动,并可以传递数据给它或者通过它接收数据。command字符串是要运行的程序名和相应参数(比如:ls或ls -l),openmode必须是 r 或w。如果是r,被调用程序的输出可以被...

    自己写的popen

    自己编写popen函数,可以学习学习哦,网上有popen的源代码

    20120629_用popen函数操作其它程序的输入和输出1

    1.1 函数原型: 1.2 说明 2.1 输出测试程序 2.2 输入测试程序 3.1 获得程序输出 3.2 给其它程序传参数 4.1 获得程序输出 4.2 给其

    重新实现popen和system函数

    重写系统提供的system和popen函数,在fork之后关闭所有的从3到最大的文件描述符

    popen使用方法示例

    popen使用方法示例,代码中调用了popen函数,同时封装函数接口供大家调用。

    popen 实现c/s模式shell功能

    收到数据后执行popen函数,将其返回的内容写入到套接字中,同样发送的内容为两次:一,数据长度。二,数据内容。 Server端具有设置client连接上限的功能,当达到上限时,关闭连接套接字,断开与client端的连接。

    popen 获取ip ,mask,dns等1.2 测试ok

    最近在做web服务器端处理。刚好用到要在服务器端调用popen函数查询相关命令,并上传到前端。所以在服务器端做的查询ip,mask等的测试代码。在linux下编译运行即可得到需要的值。代码简单。

    mp3readandmp3write.zip_Ppc_matlab mp3read_mp3readwrite_mpeg mp3

    其特点包括: -旨在重复wavread完整语法和wavwrite -还支持上的动态下采样和渠道mpg123的合并-文件优化的很长的MP3 -只需要解码的部分-使用popen函数进行编码,以避免大量临时文件(可用时-看到我popenw墨西哥) -...

    tcps.zip_linux 远程控制_popen

    用pipe实现远程控制系统中的popen函数功能。参数f_des[0]从管道中读数据,f_des[1]向管道中写数据。通过管道实现父子进程间的通信。服务器可以向多个用户提供服务。

    Linux环境下的进程

    包含进程创建、进程退出、exec族函数、system函数和popen函数的简要介绍

    linux下python使用sendmail发送邮件

    使用linux下的sendmail程序来发送邮件,利用popen函数(python docs关于popen函数)可以直接调用linux系统程序,需要指定程序所在的位置。 python代码: #!/usr/bin/python # -*- coding: UTF-8 -*- #Author: ...

    mypopen_popen实现_经过测试_绝对可用_

    pclose是阻塞函数,一般情况下,如果使用popen执行一些命令时,如果需要读取一部分信息,此时直接调用pclose函数,会阻塞,如果想不阻塞,需要自己实现pclose函数,目前给出经过测试的自己实现的my_popen

    LINUX进程间通信:PIPE与FIFO - 山 人 - 博客园1

    父进程可以往里写子进程可以从里读是用环形队列实现的数据从写端流入从读端流出这样就实现了进程间通信popen函数与pclose函数标准函数库提供了函数它创建一个管

Global site tag (gtag.js) - Google Analytics