プログラム内から別のプログラムを起動する

system、_wsystem

【書式】

int system(
   const char *command
);
int _wsystem(
   const wchar_t *command
);

【引数】

command 実行するコマンド

【戻り値】

成功時 command が NULL で、コマンド インタープリタが見つかった場合は、0 以外の値
command が NULL でない場合、system 関数はコマンド インタープリタによって返された値を返し、 コマンド インタープリタが値 0 を返した場合にだけ、system 関数は値 0

失敗時 コマンド インタープリタが見つからない場合は 0 を返し、グローバル変数 errno に ENOENT を設定
command が NULL でない場合は戻り値が-1の場合エラーを示し、 グローバル変数 errno に次のいずれかの値が設定します。

【機能】

system関数は、commandをコマンドインタープリタに渡します。 コマンドインタープリタは、渡された文字列をオペレーティングシステムコマンドとして実行します。 system関数は、コマンドインタープリタファイル(Windows NTでは CMD.EXE)を指定するCOMSPEC環境変数と PATH環境変数を参照します。 commandがNULLの場合、system関数は、コマンドインタープリタが存在するかどうかだけを確認します。

system を呼び出すには、すべてのストリームを fflush 関数または _flushall 関数を使用して 明示的にフラッシュするか、または閉じる必要があります。

_wsystem 関数は、system 関数のワイド文字バージョンです。_wsystem 関数の引数 command は、 ワイド文字列です。それ以外では、これらの関数の動作は同じです。
呼び出されたプロセスが終了するまで呼び出し側のプロセスは待機します。

E2BIG
引数リスト (システムに依存) が大きすぎます。
ENOENT
コマンド インタープリタが見つかりません。
ENOEXEC
コマンド インタープリタ ファイルの書式が無効で、実行できません。
ENOMEM
メモリ不足のためコマンドを実行できないか、使用できるメモリが破損しています。 または、無効なブロックがあるため、呼び出し側プロセスが正しく割り当てられていません。

【インクルードファイル】

system関数関数 process.h または stdlib.h
_wsystem関数関数 process.hstdlib.hwchar.h

【必要追加ライブラリ】

なし

使用例

〈サンプルプログラム〉

/* IEを起動する */

#include <stdlib.h>
#include <stdio.h>

int main(void)
{
    /* IE実行ファイルの絶対パス */
    char passbuf[] = "\"C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE\"";

    system(passbuf);

    printf("終了します\n");

    return 0;
}