为了账号安全,请及时绑定邮箱和手机立即绑定

如何从C运行外部程序并解析其输出?

如何从C运行外部程序并解析其输出?

C
ibeautiful 2019-06-24 13:11:37
如何从C运行外部程序并解析其输出?我有一个实用工具,它输出游戏所需的文件列表。如何在C程序中运行该实用程序并获取其输出,以便在同一个程序中对其进行操作?更新:很好的呼吁缺乏信息。该实用工具释放出一系列字符串,这应该是在Mac/Windows/Linux上完全可移植的。请注意,我正在寻找一种编程方法来执行该实用程序并保留其输出(这将进入stdout)。
查看完整描述

3 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

对于unix-ish环境中的简单问题,请尝试popen().

从手册页:

函数通过创建管道、分叉和调用shell来打开进程。

如果您使用读取模式,这正是您所要求的。我不知道它是否在Windows中实现。

对于更复杂的问题,您需要查找进程间通信。


查看完整回答
反对 回复 2019-06-24
?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

正如其他人所指出的,popen()是最标准的方法。由于没有任何答案提供了使用此方法的示例,因此如下所示:

#include <stdio.h>#define BUFSIZE 128int parse_output(void) {
    char *cmd = "ls -l";    

    char buf[BUFSIZE];
    FILE *fp;

    if ((fp = popen(cmd, "r")) == NULL) {
        printf("Error opening pipe!\n");
        return -1;
    }

    while (fgets(buf, BUFSIZE, fp) != NULL) {
        // Do whatever you want here...
        printf("OUTPUT: %s", buf);
    }

    if(pclose(fp))  {
        printf("Command not found or exited with error status\n");
        return -1;
    }

    return 0;}


查看完整回答
反对 回复 2019-06-24
  • 3 回答
  • 0 关注
  • 596 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信