首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在C程序中连续检查ltrace命令输出

如何在C程序中连续检查ltrace命令输出
EN

Unix & Linux用户
提问于 2018-05-12 14:59:14
回答 1查看 509关注 0票数 0

我试图使用C程序捕获ltrace命令的输出。

我尝试过使用popen(),但这不起作用,我需要连续地捕获输出,而不仅仅是一次。

下面是我的代码:

代码语言:javascript
运行
复制
#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;
}

请给我你的建议

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2018-05-12 15:42:59

ltrace输出到stderr,而不是stdout。但是popen()将读取连接命令的stdout的管道。因此,这应该足以解决这个问题:

代码语言:javascript
运行
复制
FILE *fp = popen("ltrace -p pid 2>&1", "r");

UPDATE:同样,要在shell中直接筛选相同的ltrace命令:

代码语言:javascript
运行
复制
ltrace -p pid 2>&1 | grep someregex

ltrace的S默认输出是stderr,因此必须将其重定向到stdout,以便对管道有用。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/443408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档