我需要创建一个程序来执行此操作:
- 用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/