2011-07-07 7 views
0

popenは、指定されたコマンドのo/pをファイルに格納します。どのようにしてo/pと同様の機能を得ることができますか?(つまりchar *)?コマンドを実行し、変数o/pを取得する

+0

この質問を表示してください(ほとんどあなたのものです):http://stackoverflow.com/questions/219138/get-command-output-in-pipe-c-for-linux –

+0

@Aleks:申し訳ありませんそれは私がここで求めているものではありません。 – hari

答えて

1

変数にo/pを返すものが見つかりませんでした。いくつかのコマンドのo/pが大きすぎるため、動作を一貫させるためには意味がありますが、o/pはファイルに格納されています。私は実際にpopenによって返されたファイルからの読書を終了しました。

ありがとうございました。

0

あなたはありません、popen()をファイルに出力を格納しません

1

を制御ストリームで起動コマンドのSTDOUTとSTDERRを置き換えることができます。それはのストリームを指定します。は、となる可能性がありますが、ディスク上のファイルを表します。パイプまたはソケット。ストリームはファイルよりも抽象的です。

パイプを使用するには、たとえばパイプを使用してパイプを開きます。 pipe()を呼び出して、結果のパイプの適切な端にあるfdopen()を呼び出します。

+0

ありがとうございました。私がしたいのは、非常に単純なもの、つまり 'wc -l filename'を実行し、o/pを変数/バッファに格納することです。可能? – hari

0

Cプログラムからunixコマンドを実行して、出力を保存しますか?

もしそうなら、シーケンスはFILE* pipe = popen("wc -l filename", "r");を呼び出してから、fopenで開いたファイルから読み込むのと同じようにFILE * pipeから読み込みます。つまり、コマンドの出力がファイル内にある場合と同じように、fgetsまたはfscanfのような関数を使用して出力を読み取ることができます。

関連する問題