精华内容
下载资源
问答
  • popen

    2021-09-24 16:12:33
  • popen函数

    2021-04-17 21:05:13
    popen函数函数介绍头文件:函数原型:参考示例代码:执行结果: 函数介绍 执行可执行的程序,并获取运行的输出结果 popen函数比system函数好的点是popen函数会返回执行程序后的结果,system执行后的结果会流失掉 ...

    函数介绍

    执行可执行的程序,并获取运行的输出结果

    • popen函数比system函数好的点是popen函数会返回执行程序后的结果,system执行后的结果会流失掉

    头文件:

    #include <stdio.h>
    

    函数原型:

       FILE *popen(const char *command, const char *mode);
    
       int pclose(FILE *stream);
    

    参数说明:1

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

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

    返回值:

    • 如果调用成功,则返回一个读或者打开文件的指针,如果失败,返回NULL,具体错误要根据errno判断

    int pclose (FILE* stream)

    参数说明:

    • stream:popen返回的文件指针

    返回值:

    • 如果调用失败,返回 -1

    参考示例代码:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    //size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
    
    int main(void)
    {
            char ret[1024] = {0};
            FILE *fp;
            fp = popen("ps -l","r");
            int n_read = fread(ret, sizeof(char), sizeof(ret), fp);
    
            printf("read ret %d byte, ret = \n%s",n_read,ret);
            pclose(fp);
    
    
    

    执行结果:

    read ret 361 byte, ret = 
    F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
    0 S  1000  22620  22555  0  80   0 -  7558 wait   pts/0    00:00:00 bash
    0 S  1000  23413  22620  0  80   0 -  1128 pipe_w pts/0    00:00:00 a.out
    0 S  1000  23414  23413  0  80   0 -  1158 wait   pts/0    00:00:00 sh
    0 R  1000  23415  23414  0  80   0 -  9008 -      pts/0    00:00:00 ps
    
    

    1. 参考链接 ↩︎

    展开全文
  • popen() —— 代表“管道打开” —— 是许多 Unix 版本中提供的非常有用的系统调用。 它运行一个作为字符串传入的命令,然后返回一个文件句柄,这样父进程就可以像文件一样读取或写入该进程; 以这种方式传递的数据...
  • func_popen.rar

    2021-02-03 11:36:05
    是一个代替用fork代替popen的api。 是开发一个项目发现的频繁使用popen,会出现异常。所以使用了fork替代popen
  • linux popen函数

    2010-04-28 20:45:18
    linux popen函数linux popen函数linux popen函数linux popen函数
  • 方法是os.popen(命令,权限,缓冲大小)比如a = 'mkdir def'b= os.popen(a,'r',1)print b就是等同于使用命令去创建了一个def的文件夹,r是其权限,1是缓冲大小。第二个第三个参数都是可选的。详细分析:os.popen() 方法...

    简述

    就是新建一个管道执行一个命令。

    方法是os.popen(命令,权限,缓冲大小)

    比如

    a = 'mkdir def'b= os.popen(a,'r',1)

    print b

    就是等同于使用命令去创建了一个def的文件夹,r是其权限,1是缓冲大小。第二个第三个参数都是可选的。

    详细分析:

    os.popen() 方法用于从一个命令打开一个管道。

    语法

    popen()方法语法格式如下:

    os.popen(command[,mode[,bufsize]])

    参数

    command -- 使用的命令。

    mode -- 模式权限可以是 'r'(默认) 或 'w'。

    bufsize -- 指明了文件需要的缓冲大小:0意味着无缓冲;1意味着行缓冲;其它正值表示使用参数大小的缓冲(大概值,以字节为单位)。负的bufsize意味着使用系统的默认值,一般来说,对于tty设备,它是行缓冲;对于其它文件,它是全缓冲。如果没有改参数,使用系统的默认值。

    实例

    以下实例演示了 popen() 方法的使用:

    #!/usr/bin/python

    #-*- coding: UTF-8 -*-import os, sys

    # 使用 mkdir 命令

    a= 'mkdir nwdir'b= os.popen(a,'r',1)

    print b

    1049537-20170929192148903-428035186.png

    其实就是开了个管道去执行另外的命令

    展开全文
  • 函数popen

    2015-09-09 16:56:35
    一.popen函数 1.简介 创建一个管道,然后再创建一个进程。 2.调用格式 #include FILE *popen(const char *command, const char *type); 3.popen说明 创建一个管道,然后fork创建一个进程。由于管道具有单向性质,...
    

    一.popen函数
    1.简介
    创建一个管道,然后再创建一个进程。然后执行命令


    2.调用格式
    #include <stdio.h>
    FILE *popen(const char *command, const char *type);


    3.popen说明
    创建一个管道,然后fork创建一个进程。由于管道具有单向性质,所以参数type只能指定为读或写,不能同时指定。函数返回的值也相应的只读或只写。参数command是个指针类型,指向一段以字符串结
    束符结尾的带有shell命令的可执行命令字符串。command参数会通过-c参数传给/bin/sh,然后被shell执行。参数type和参数command类型一样,也是一个指针,指针type必须为非空,指向“r”或“w”来表示参数command只读或只写。在glibc2.9以来,参数type在“r”或“w”基础上再添加“e”,该标志可以设置文件描述符FD_CLOEXEC属性,类似open的O_CLOEXEC


    4.函数返回值
    popen函数的返回值是正常I/O流,她往往和pclose()成对出现,调用pclose来关闭。向这个流写操作类似于命令command标准输入。读取这个流类似于读取command的标准输出。注意popen()流的输出默
    认是全缓冲的,只有缓冲满的时候再flash输出。pclose()函数会等待popen创建的进程执行命令结束然后再返回command执行的状态。如果popen执行调用fork创建进程或者pipe创建管道(设置errno),或者没有更多内存给popen时(不会设置errno),返回NULL。如果进程结束状态失败,那么pclose返回-1。如果参数非法,errno设置为EINVAL。如果pclose不能获取子进程状态,错误设置为ECHILD。

    展开全文
  • subprocess.Popen

    2021-03-25 10:16:15
    subprocess.Popen文档说明 网址: https://blog.csdn.net/qq_37653148 1、subprocess.Popen 这个模块主要就提供一个类Popen: class subprocess.Popen( args, bufsize=0, executable=None, stdin=None, stdout...
  • Python的popen()方法打开一个管道或命令。返回值是一个连接到管道的打开的文件对象,可以根据模式是“r”(默认)或’w‘进行读取或写入。与open()函数的bufsize参数具有相同的含义。语法以下是popen()方法的语法 -os....
  • windows 的_popen,与linux 的popen对应

    千次阅读 2019-05-28 10:03:02
    Run-Time Library Reference ..._popen, _wpopen Creates a pipe and executes a command. FILE *_popen( const char *command, const char *mode ); FILE *_wpopen( const wchar_t *command, c...
  • popen详解

    2019-01-23 10:45:33
    popen详解 说明:本文题目来源于牛客网,答案分析来源个人,仅为参考 1、请问下面的程序最后会产生多少个进程: int main( ){ int i; for(i = 0; i&lt;5;i++){ int pid = fork(); if(pid == 0){ ...
  • 正如标题所说,我不确定是否应关闭使用popen打开的流.我不确定的原因是因为每次我在使用popen打开的流上调用pclose时,我得到一个-1返回代码.如果我之后打电话给perror,我收到以下消息.pclose: No Child Processes我在...
  • popen与system

    2018-03-23 11:42:51
    popen函数 popen函数 进程IO函数 与pclose一起使用 函数说明 popen() 函数通过创建一个管道,调用 fork 产生一个子进程,执行一个 shell 以运行命令来开启一个进程 函数原型 FILE* popen ( const char* ...
  • python 版本 2.5.4 (在高版本python中提倡使用 subprocess.Popen 取代 os.popen)os.popen 会出现过长时间等待导致阻塞问题, 解决方法如下:[python] view plain copy print?def TIMEOUT_COMMAND(command, timeout):...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 44,500
精华内容 17,800
关键字:

popen