函数popen



一.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。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值