如何从C执行nm并捕获输出

时间:2013-12-06 06:23:10

标签: c exec fork pipe nm

我试图编写一个程序来检查另一个程序的全局变量的大小。让我们打电话给我的节目"检查"和检查的程序" a.out,"意思是我会像这样运行我的程序:

./check a.out

我认为我可以使用以下命令找到此值:

nm -t d -S a.out | grep ' B ' | awk '{print $2}'

我知道您可以使用fork / execl从程序中执行程序,但是我在编写IO管道时遇到了一些麻烦。

使用一些简单的strcpy / strcats,我有一个包含上述字符串的c字符串,我可以使用execl调用它,但它似乎没有打印任何东西。现在它看起来像这样:

// Code setting char command[1024] equal to the above string
int pid;
if(pid = fork()){ // Parent
    // Need some pipes here?
}
else{ // Child
    execl(command, NULL);
}

有人能指出我正确设置这些管道的方向吗?

1 个答案:

答案 0 :(得分:0)

pubs.opengroup.org/onlinepubs/009696799/functions/popen.html可能就是您所需要的。 - 马特

看起来我可以让popen做我想做的事。我仍然需要解析输出并将其转换为整数,但看起来这将完成工作! - nchen24