1

別のプログラムのグローバル変数のサイズをチェックするプログラムを作成しようとしています。私のプログラムを「check」、チェックされたプログラムを「a.out」と呼びましょう。つまり、プログラムを次のように実行します。

./check a.out

次のコマンドを使用してこの値を見つけることができると思います。

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

fork/execl を使用してプログラム内からプログラムを実行できることは知っていますが、IO のパイプを書くのに少し苦労しています。

いくつかの単純な strcpy/strcats を使用して、上記の文字列を含む c-string を取得しました。これは 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);
}

誰かがこれらのパイプを設定する正しい方向に私を向けることができますか?

4

1 に答える 1

0

pubs.opengroup.org/onlinepubs/009696799/functions/popen.htmlが必要かもしれません。– マット

popen を取得して、やりたいことができるようです。出力を解析して整数に変換する必要がありますが、これでうまくいくようです。– nchen24

于 2016-11-03T12:35:33.127 に答える