管道(popen和pclose)


这两个函数实现的操作:创建一个管道,fork一个子进程,关闭管道不使用端,exec一个cmd命令,等待命令终止

       #include <stdio.h>

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

       int pclose(FILE *stream);

过程

  • 函数popen先执行fork,然后调用exec以执行command,并且返回一个标准I/O文件指针。
  • 如果type是”r“,则文件指针连接到cmd的标准输出
  • 如果type是”w“,则文件指针连接到cmd的标准输入
  • pclose函数关闭标准I/O流,等待命令执行结束,然后返回cmd的终止状态;
  • 如果cmd不能被执行,则pclose返回的终止状态与shell执行exit一样。
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

int main() {
    FILE* f = popen("cat ./test.txt", "r"); //只读
    if (!f) {
        perror("popen");
        exit(1);
    }

    char c;
    while (~(c = fgetc(f))) {
        putchar(toupper(c)); //小写字母变大写
    }

    return 0;
}

文章作者: Axieyun
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Axieyun !
评论
评论
  目录