UNIX/Linuxの部屋 関数:system

TOP UNIX/Linuxの部屋 UNIX/Linuxコマンド一覧 用語集 新版 由来/読み方辞書 環境変数マニュアル Cシェル変数 システム設定ファイル システムコール・ライブラリ ネットワークプログラミングの基礎知識 クラウドサービス徹底比較・徹底解説




関数 system コマンドを実行 このエントリーをはてなブックマークに追加

コマンドを実行する。
system("ls -l /usr");
また、sh 風のパターンマッチも利用できる。
system("cat *.txt");
最後に & を付けることで、バックグラウンドで実行することもできる。
system("sleep 100 &");

system はライブラリ関数である。system の内部では fork して子プロセスを作成し、親プロセスは sh -c cat *.txt のように exec する。親プロセスは wait で子プロセスの終了を待つ。だから、sh でできることは system でも可能なわけ。

ただし、system ではコマンドの出力を取り込んだり、標準入力にデータを与えることはできない。そういう場合は popen を使うか、自前で pipe・fork・dup2・exec すればよい。