システムインタフェース

exec(2)

exec(2) は、execl(2)execv(2)execle(2)execve(2)execvp(2) を含む関数ファミリ名です。これらの関数はいずれも、呼び出しプロセスを新しいプロセスで置き換えますが、引数のまとめ方と表し方が異なります。たとえば、execl(2) は次のように使用できます。


execl("/usr/bin/prog2", "prog2", progarg1, progarg2, (char (*)0));

exec1(2) 引数リストは、次のとおりです。

/usr/bin/prog2

新しいプロセスファイルのパス名 

prog2

新しいプロセスが argv[0]に取り込む名前

progarg1

progarg2

prog2 への char (*) 型の引数

(char (*)0)

引数の終わりを示す NULL の char ポインタ 

exec(2) が正常に実行されるといかなる時でも、復帰はありません。新しいプロセスが exec(2) を呼び出したプロセスを上書きしてしまうためです。新しいプロセスは、古いプロセスのプロセス ID やその他の属性を引き継ぎます。exec(2) の呼び出しが失敗すると、制御は呼び出しプログラムに戻され、戻り値 -1 が返されます。errno をチェックすれば、失敗した理由がわかります。