【问题标题】:Getting output of a system command from stdout in C从 C 中的标准输出获取系统命令的输出
【发布时间】:2012-08-07 07:02:13
【问题描述】:

我正在 Android/Linux 下编写一个运行系统命令的 C 程序。该命令将一些文本输出到标准输出,我正在尝试将输出捕获到字符串或字符数组中。

例如:

system("ls");

会将当前目录的内容列出到标准输出,我希望能够在 C 中以编程方式将该数据捕获到变量中。

我该怎么做?

谢谢。

【问题讨论】:

    标签: c stdout


    【解决方案1】:

    您想使用popen。它返回一个流,例如fopen。但是,您需要使用pclose 关闭流。这是因为pclose 负责清理与启动子进程相关的资源。

    FILE *ls = popen("ls", "r");
    char buf[256];
    while (fgets(buf, sizeof(buf), ls) != 0) {
        /*...*/
    }
    pclose(ls);
    

    【讨论】:

    • 这只是获取输出流,也获取错误流?
    • @ShashankSingh tio.run/…
    猜你喜欢
    • 2010-09-09
    • 2023-04-05
    • 1970-01-01
    • 2010-10-13
    • 2014-12-26
    • 2010-12-25
    • 1970-01-01
    • 2016-06-03
    • 2011-04-05
    相关资源
    最近更新 更多