C++ 実行コマンド ライン

Naila Saad Siddiqui 2023年10月12日
C++ 実行コマンド ライン

この記事では、C++ プログラムを介してコマンド プロセッサでコマンドを実行するための system() メソッドについて簡単に説明します。

C/C++ は、コマンド ライン プロセッサを実行して CMD コマンドを実行できる別のプロセスを生成するという負担を負うことなく、これを実行できる関数を提供します。

system() メソッドを使用して C++ でコマンドライン コマンドを実行する

system() 関数は長い間 C 標準ライブラリの一部であり、追加のライブラリを必要とせずに C++ コードに含めることもできます。 この関数は、呼び出しプロセスからシェル コマンドを実行します。

ただし、system() は、呼び出し元のプログラムが単一の子プロセスを生成し、そのプロセスが終了するのをすばやく待機する必要がある特定のユースケース向けに設計されていることに注意してください。

その結果、関数は、システム API インターフェイスの一部として利用可能な複数のシステム コールを使用して実装されます。

Linux 環境では、プログラマーは、新しい子プロセスの作成と削除を制御する forkexec、および wait 関数の頭を悩ませる必要はありません。

C++ での system() メソッドの構文、パラメーター、および戻り値

この関数の構文は次のとおりです。

int system(const char* cmd_text);

system() 関数に渡される唯一のパラメーターは、コマンド テキストを含む char 配列です。 コマンド プロセッサは、このコマンド テキストを実行します。

コマンド プロセッサの可用性をチェックするために、この関数にパラメータとして Null ポインタを渡すことができることを思い出してください。

コマンドがこの関数にパラメーターとして渡される場合、通常、system() はそのコマンドの exit ステータスを返します。 それでも、戻り値がコマンドとユーティリティに依存する場合があります。

コマンド プロセッサの可用性をチェックするために Null ポインタが渡されたとします。 その場合、コマンド プロセッサが使用できない場合は 0 を返し、それ以外の場合はゼロ以外の値を返します。

C++ 実行コマンド ラインを示すサンプル コード

次の例は、system() 関数の最も基本的なアプリケーションを示しています。これは、date コマンドライン ユーティリティを実行して、現在のシステム日付を出力します。

#include <stdlib.h>

#include <iostream>
using namespace std;

int main() {
  system("date");
  return 0;
}

次の出力が生成されます。

Sat Sep 10 09:17:19 PM UTC 2022

別の例を見てみましょう。この例では、最初にコマンド プロセッサが存在するかどうかを確認してから、system() 関数を使用して ls -l コマンドを実行します。

#include <stdlib.h>

#include <iostream>
using namespace std;

int main() {
  if (system(NULL)) {
    cout << "Command Processor OK" << endl;
    cout << "Running ls command" << endl;
    system("ls -l");
  } else
    cout << "Command Processor not found!!" << endl;

  return 0;
}

次の出力が得られます。

Command Processor OK
Running ls command
total 24
-rwxr-xr-x 1 root root 16744 Sep 10 21:18 jdoodle
-rw-r--r-- 1 root root   315 Sep 10 21:18 jdoodle.cpp