【Linux】popen与system函数

首先我们来看一下popen函数:

用man命令来查看popen会看到这样的介绍:

Name:popen,pclose--pipe stream to or from a process

Synopsis:

#include <stdio.h>

FILE* popen(const char * command,const char * type);

int pclose(FILE * stream);

popen总是和pclose一起出现并被使用的。popen()借助fork或invoke创建一个子进程进而来创建一个管道,由于在管道中,数据流是单向的,command只能产生stdout或者读取stdin,type只有两个值:'w'和'r'。r表示command从管道中读取数据流,而w表示command的stdout输出到管道中。command无法同时读取和输入。popen返回值为该FIFO数据流的指针。

代码实现管道读:

首先创建一个test文件,在其中写入“read pipe”。

接下来运行以下代码:

 这样就成功读到了test中的内容。

管道写:

 

成功写入。popen的功能有点类似于文件I/O中的fopen函数。

system函数

system("cat "read pipe!">test");

popen可以控制程序的输入或者输出,而system功能稍少一点,无法将命令运行的结果用到程序中,例如ls/cat命令等。但在不需要使用程序I/O数据流的情况下,使用system函数更加便捷。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值