ホームページ >バックエンド開発 >C++ >C/C の `system()` コマンドから stdout を効果的にキャプチャするにはどうすればよいですか?

C/C の `system()` コマンドから stdout を効果的にキャプチャするにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-04 20:56:131054ブラウズ

How Can I Effectively Capture stdout from a `system()` Command in C/C  ?

system() コマンドからの stdout の効果的なキャプチャ

system() 関数を利用して外部アプリケーション (「ls」など) を起動する場合」の場合、さらなる処理のためにその出力をリアルタイムでキャプチャすることが望ましい場合があります。 C/C でこれを実現するには、次の最適なアプローチを検討してください。

popen() 関数と pclose() 関数は、popen マニュアルに記載されているように、外部コマンドから stdout/stderr をキャプチャするための堅牢なメカニズムを提供します。コード例を次に示します。

#include <stdio.h>

FILE *fp;
char buffer[1024];

fp = popen("ls", "r");
while (fgets(buffer, sizeof(buffer), fp) != NULL) {
  // Process the stdout line
}
pclose(fp);

このコード スニペットは、「ls」コマンドへのパイプを開き、出力の各行を反復処理して、さらなる処理のために送信します。外部コマンドが完了すると、pclose() はパイプを閉じてリソースを解放します。

この手法を採用すると、外部アプリケーションから stdout を効果的にキャプチャでき、C/C コードとのシームレスな統合が保証されます。

以上がC/C の `system()` コマンドから stdout を効果的にキャプチャするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。