【问题标题】:How to execute nm from C and capture output如何从 C 执行 nm 并捕获输出
【发布时间】:2013-12-23 10:05:33
【问题描述】:

我正在尝试编写一个程序来检查另一个程序的全局变量的大小。让我们称我的程序“check”和被检查的程序“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);
}

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

【问题讨论】:

  • 除非这是一个编程练习,否则如果您宁愿将命令放在 shell 脚本中,它可能会更容易且可维护
  • 如果我要将它放入一个 shell 脚本中,我可以简单地使用 system 或 execl 运行该脚本,但这是编程练习的一部分,更重要的是,我有点想将其包含在一个文件中。
  • @Mat 谢谢!看起来我可以做我想做的事。我仍然需要解析输出并将其转换为整数,但看起来这可以完成这项工作!

标签: c exec fork pipe nm


【解决方案1】:

pubs.opengroup.org/onlinepubs/009696799/functions/popen.html 可能是您需要的。 – 垫子

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

【讨论】:

    猜你喜欢
    • 2017-08-15
    • 1970-01-01
    • 2012-05-09
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多