あーるPG - 社会人のデジタル生活

日曜プログラマになろうかなーと思った30代理系社会人の、キャリアアップや趣味(特にデジタル情報)の記録。らーめんとビールが好き。

子プロセスの生成

is_parent = fork()        #子プロセスの生成
if (is_parent)             #親の場合process IDが、子の場合nilが返る
    Process.wait        #子プロセスが終了するまで待つ
    p "parent : " + is_parent.to_s
else 
    p " child : " + is_parent.to_s
    exec("ls -l")        #プログラムの起動.この行以降は実行されない
    p "no exec line"    #この行は実行されない
end

p "-------system-------"
ret = system("ls")        #shellからプログラム実行
p ret                    #成功すればtrue, 失敗すればfalseが返る

子プロセスを生成するには、C言語(UNIX)と同様のProcess#fork, Process#execを使う。
forkは子プロセスを生成し、プログラムの状態をコピーして動作させる。ただし、forkの返り値がprocessIDかnilかになるので、そこで分岐させる。
Process#system は子プロセスにてコマンドを実行する。基本的にはshellを介する。