関数system
関数systemによる,もっとも簡単なプロセスからプロセスを生む方法.
systemはプロセスの中からshell経由でコマンドを実行する.すなわち
sh -c コマンドである.通常のコマンドラインに入力するのと同じ文字列を引数に指定する.だからワイルドカードなども使用できる.その代わりshell起動のオーバーヘッドがかかる.返り値は以下の通り.
- 127
- shを起動できなかった
- -1
- その他のエラー
- その他の値
- コマンド実行の返り値
まずスクリプトhoge.shを作成してみる.
実行するとresultの値が期待したものとは異なっていた.
#!/bin/sh
case $1 in
1)
exit 1;
;;
2)
exit 2;
;;
3)
exit 3;
;;
default)
exit 0;
;;
esac
そしてこれをsystem関数で呼んでみる.
execute command "hoge.sh" sh: hoge.sh: command not found result = 32512 execute command "./hoge.sh" result = 0 execute command "./hoge.sh 1" result = 256 execute command "./hoge.sh 2" result = 512 execute command "./hoge.sh 3" result = 768コマンドから返されるステータスはwait関数で定義されているフォーマットで返るらしくって,それはWEXITSTATUS(status)で取得できるらしい.つまり先に示した返り値がwait関数のフォーマットになって返って来る.が,WEIXTSTATUSを使用するとリンクでエラーが返される.定義されていないと言われる(stdlib.hで定義されているように見えるのだが......).

