目录

 

理论

例子


理论

stdio.h里面有标志库管道操作

FILE *popen(const char* cmdstring, const char *type);返回值:成功返回文件指针,出错返回NULL;

 int pclose(FILE *fp);

返回值:cmdstring的终止状态,出错返回-1

 

注意:使用pepen()创建管道必须使用pclose()关闭!

 

popen内部原理:

Linux学习笔记-标准库中的管道操作

 

 

例子

源码如下:

#include <stdio.h>
#include <stdlib.h>
#include <memory.h>

int main(void){

        FILE *fp;

        //命令执行的结果放置在fp指向的结构体缓存中
        fp = popen("cat /etc/passwd", "r");
        char buf[512];
        memset(buf, 0, sizeof(buf));
        while(fgets(buf, sizeof(buf), fp) != NULL){

                printf("%s", buf);
        }

        pclose(fp);

        printf("-------------------------------------\n");
        //wc命令统计数据
        fp = popen("wc -l", "w");
        //向fp指向的结构体缓存中写入数据
        fprintf(fp, "1\n2\n3\n");
        pclose(fp);

        exit(0);
}

运行截图如下:

Linux学习笔记-标准库中的管道操作

-l为统计多少行

相关文章:

  • 2021-10-10
  • 2021-11-09
  • 2022-12-23
  • 2022-12-23
  • 2021-06-15
  • 2021-05-31
  • 2021-10-06
  • 2021-07-04
猜你喜欢
  • 2022-01-29
  • 2022-01-03
  • 2021-11-20
  • 2021-10-21
  • 2021-10-01
  • 2021-10-03
  • 2022-12-23
相关资源
相似解决方案