0

C プログラムで system() 関数を使用して文字列を取得します。しかし、system() 関数は実際には出力を表示し、整数値 (実行が成功した場合は 0) を返します。しかし、私が望むのは、system() 関数の出力を文字列変数に格納する必要があるということです。例えば:

char a[5];
a = system("echo \"hi\"");
printf("The string is: %s",a);

a値を格納しhiて出力するこのようなことはThe string is: hi 助けてください。前もって感謝します。オペレーティング プラットフォーム: Linux

4

2 に答える 2

3

popenこれの代わりに使用する必要があります(または少なくとも使用したい)system。ただし、出力を文字列に直接格納するわけではありません。子からの出力を読み取ることができるファイル ハンドルが提供されます。fgetsそこからデータを文字列に読み込むようなものを使用するのは使い方次第です。

于 2012-06-21T17:20:23.970 に答える
2

system() は終了ステータスのみを提供します。

STDOUT に出力されたものを取得したい場合は、読み取り可能な別のファイル記述子があることを確認する必要があり、それがこの出力をキャプチャします。通常、pipe()最初にコマンドを使用してこれを行い (接続された記述子を作成) fork、次にdup(pipin, 0)pipe() の出力の 1 つを強制的に子プロセスの STDOUT にします。

popen()も役立つかもしれません。

于 2012-06-21T17:22:38.157 に答える