C
如何在C程序中連續檢查ltrace命令輸出
我正在嘗試
ltrace
使用 C 程序擷取命令的輸出。我嘗試過使用
popen()
,但這不起作用,我不僅需要連續擷取一次輸出。下面是我的程式碼:
#include <stdio.h> #include <stdlib.h> int main(int carg, char *args[]) { FILE *fp = popen("ltrace -p pid", "r"); char buf[255]; while (1) { if (fgets(buf, 255, fp) != NULL) { printf("Captured Text: %s", buf); } } return 0; }
請給我你的建議
ltrace
輸出到stderr,而不是stdout。但popen()
會讀取連接命令stdout的管道。所以這應該足以解決它:FILE *fp = popen("ltrace -p pid 2>&1", "r");
更新:同樣,在 shell 中直接過濾相同的
ltrace
命令:ltrace -p pid 2>&1 | grep someregex
ltrace
的預設輸出是到stderr,所以它必須被重定向到stdout才能對管道有用。