kind=defined
names=system
visibility=public

--- system(command) -> bool

引数を外部コマンドとして実行して、成功した時に真を返します。

子プロセスが終了ステータス 0 で終了すると成功とみなし true を返します。
それ以外の終了ステータスの場合は false を返します。
コマンドを実行できなかった場合は nil を返します。

終了ステータスは変数 [[m:$?]] で参照できます。

コマンドを実行することができなかった場合、多くのシェルはステータス
127 を返します。(したがって [[m:$?]] の数値は、0x7f00)、シェルを介
さない場合は Ruby の子プロセスがステータス 127 で終了します。
コマンドが実行できなかったのか、コマンドが失敗したのかは、普通
[[m:$?]] を参照することで判別可能です。

==== 引数の解釈

この形式では command が shell のメタ文字
//emlist{
  * ? {} [] <> () ~ & | \ $ ; ' ` " \n
//}
を含む場合、shell 経由で実行されます。
そうでなければインタプリタから直接実行されます。

@param command command コマンドを文字列で指定します。

@see [[m:Kernel.#`]],[[m:Kernel.#spawn]],[[m:Kernel.#exec]],[[man:system(3)]]

--- system(program, *args) -> bool

引数を外部コマンドとして実行して、成功した時に真を返します。

子プロセスが終了ステータス 0 で終了すると成功とみなし true を返します。
それ以外の終了ステータスの場合
(コマンドを実行できなかった場合も含む)は false を返します。

終了ステータスは変数 [[m:$?]] で参照できます。

コマンドを実行することができなかった場合、多くのシェルはステータス
127 を返します。(したがって $? の数値は、0x7f00)、シェルを介
さない場合は Ruby の子プロセスがステータス 127 で終了します。
コマンドが実行できなかったのか、コマンドが失敗したのかは、普通
$? を参照することで判別可能です。

==== 引数の解釈

この形式で呼び出した場合、空白や shell のメタキャラクタも
そのまま program の引数に渡されます。
先頭の引数が2要素の配列であった場合、第1要素の文字列が実際に
起動するプログラムのパスであり、第2要素が「みせかけ」のプロ
グラム名になります。
また、第1要素はフルパスで指定しなくても環境変数 PATH から探します。

@param program 文字列か2要素の配列です。
@param args program に渡す引数を 0 個以上指定する
@raise ArgumentError 第一引数が配列かつ要素数が 2 でない場合に発生します。
@see [[m:Kernel.#`]],[[m:Kernel.#spawn]],[[m:Kernel.#exec]],[[man:system(3)]]

