popen用法

发布时间 2023-10-07 10:39:09作者: ⭐⭐-fighting⭐⭐

函数名中的 popen 是一个标准 C 库函数,用于创建一个管道并启动另一个进程来执行一个 shell 命令。popen 返回一个文件指针,可以用于读取或写入子进程的标准输入或输出流。

#include <stdio.h>

FILE *popen(const char *command, const char *mode);
int pclose(FILE *stream);
  • command:要执行的 shell 命令,可以是任何有效的 shell 命令,例如 "ls -l"

  • mode:模式,可以是 "r"(读取子进程的标准输出)或 "w"(向子进程的标准输入写入数据)。

  • 返回值:如果成功,则返回一个指向文件的指针,否则返回 NULL

  • pclose:用于关闭通过 popen 打开的流,并等待子进程结束。

示例用法

下面是一个简单的示例,演示如何使用 popen 来执行 shell 命令并读取其输出:

#include <stdio.h>

int main() {
    FILE *fp;
    char buffer[1024];

    // 执行 ls 命令并读取输出
    fp = popen("ls", "r");

    if (fp == NULL) {
        printf("Failed to run command\n");
        return 1;
    }

    printf("Output of ls command:\n");

    // 读取输出并打印到控制台
    while (fgets(buffer, sizeof(buffer), fp) != NULL) {
        printf("%s", buffer);
    }

    pclose(fp);
    return 0;
}

在这个示例中,popen 用于执行 ls 命令,并通过读取输出将结果打印到控制台。最后,通过调用 pclose 来关闭文件指针并等待命令执行完毕。