popen函数的用法及注意事项

发布时间:2020-07-08 02:10:49 作者:小杨杨雪松
来源:网络 阅读:2199

标准I/O库提供了两个函数popenpclose这两个函数,它们的功能是创建一个连接到另一个进程的管道,然后读其输出或向其输入端发送数据。先fork一个子进程,关闭未使用的管道端。

popen() 函数 用 创建管道 的 方式启动一个 进程, 并调用 shell 因为 管道是被定义成单向的, 所以 type 参数 只能定义成 只读或者 只写, 不能是 两者同时, 结果流也相应的 是只读 或者 只写

函数popen的原型:

   FILE* POPEN(const char* cmdstring,const char* type)

     若成功,返回文件指针,若出错,返回NULL

函数popen先执行fork,然后调用exec执行cmdstring,并且返回一个文件指针,如果type是“r,则文件指针连接到cmdstring的标准输出,如果type是“w,则文件指针连接到cmdstring的标准输入。

下面是一个测试用例,简单的用下这个函数:

  #include <stdio.h>

   #include <stdlib.h>                                       

   #include <unistd.h>

   #include <string.h>

   int main()

   {

       FILE *stream;

       FILE *wstream;

      

       char buf[1024];

       memset(buf,'\0',sizeof(buf));

   stream=popen("ls -l","r");//ls -a的命令通过管道读取(r)stream

 

      wstream=fopen("myopen.txt","w+");//新建一个可写的文件

      fread(buf,sizeof(char),sizeof(buf),stream);//stream中的数据流读取到buf

      fwrite(buf,sizeof(char),sizeof(buf),wstream);//buf的数据写到wstream

      fclose(wstream);

      pclose(stream);

      return 0;

  }   

 运行结果:

popen函数的用法及注意事项

 

                                                                                                                                                      

                                                                                                                                                                                                                                                                                                     

 

 

 

 

 

 


推荐阅读:
  1. trim()函数的用法
  2. C++ stl库bind函数模板用法的注意事项

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

函数 fopen 事项

上一篇:膨胀处理提取车辆的大致轮廓

下一篇:bezier插值绕过打结问题

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》