c - 查找 popen 输出更改

标签 c linux gcc

我需要创建一个程序来执行此操作:

  • 用popen执行命令
  • 用 popen 的输出做一些事情(在很多事情中使用 FILE)
  • 继续检查 popen 输出更改,如果有,则重新执行所有操作。

源代码在这里:https://gitorious.org/clyv/clyv

所以我只想在 popen 的输出发生变化时再次执行程序的所有其余部分(必须与第一个输出进行比较) 该程序应该第一次做所有事情,之后,只做所有事情并在 popen 输出发生变化时再次打印。 popen 应该每秒验证一次。

更新

我在这里没有得到任何解决我问题的答案,但是阅读 C 教程我看到了一些关于线程的东西,这听起来像是我的解决方案,我会看看我能做些什么。

最佳答案

您可以根据需要多次调用 popen()。但是,要正确释放调用 popen() 所使用的资源,您需要调用 pclose()

在你的情况下,你可能只想偶尔轮询输出,并在必要时发出一些东西。

first_time = 1;
need_to_print = 1;
for (;;) {
    FILE *fp = popen(...);
    /* read input ... */
    pclose(fp);
    /* parse input ... */
    if (first_time) {
        /* save contents for future comparison... */
        first_time = 0;
    } else {
        need_to_print = /* result of comparing saved contents with new contents */;
    }
    if (need_to_print) {
        /* print something ... */
    }
    sleep(INTERVAL);
}

关于c - 查找 popen 输出更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25046084/

相关文章:

c - 让我的屁股被段错误踢了

c - 错误 : Invalid Use of Void Expression in C

RedHat Linux 5 上的 Java 安装

linux - 不扩展 $HOME 或 "~"的符号链接(symbolic link)?

c++ - 为什么发出空的 asm 命令会交换变量?

c - LLVM IR 中函数的参数编号与源代码不同

python - 为 Python 解释器建立的每个连接绑定(bind)传出 IP 地址

php - 启动和停止(命令行)程序并获取其输出

clang/gcc 可以优化链表树吗?

objective-c - 将 Objective-C 文件编译成目标文件 (.o)