C/C での system() コマンドからの標準出力のキャプチャ
system() を使用してシステム コマンドを実行する際には、次のことが不可欠になります。さらに処理するためにその出力をキャプチャします。 C/C は、これを実現するためのさまざまなアプローチを提供しており、信頼できるソリューションとして登場しているのが、popen() 関数です。
popen() 関数
popen() 関数が開きますシェルからパイプを呼び出し、指定されたコマンドを実行してプロセスを起動します。これは、パイプに接続されたストリーム ポインタ FILE を返し、読み取りおよび書き込み操作を可能にします。
構文と使用法
popen() の構文は次のとおりです。
#include <stdio.h> FILE *popen(const char *command, const char *type);
ここで:
システム コマンドの stdout をキャプチャするには、次のコマンドを使用します。
FILE *fp = popen(command, "r");
FILE *fp は、コマンドの stdout に接続されたストリームを表します。その後、fgetc()、fgets()、またはその他のストリーム操作関数を使用して出力を読み取ることができます。
例
char buffer[BUFSIZ]; FILE *fp = popen("ls", "r"); while (fgets(buffer, BUFSIZ, fp) != NULL) { printf("%s", buffer); } pclose(fp);
パイプを閉じる
出力の読み取りが完了したら、次を使用してパイプを閉じることが重要です。 pclose() は、関連付けられたリソースを解放します。
int status = pclose(fp);
注: は、popen() を使用して stdout をキャプチャし、外部コマンドで発生したエラーを継承します。エラーを検出するには、pclose() の戻り値をチェックすることを検討してください。
以上がC/C で system() コマンドから stdout をキャプチャするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。