exec は、execl、execv、execle、execve、execlp、execvp を含む関数ファミリ名です。これらの関数はいずれも、呼び出しプロセスを新しいプロセスで置き換えますが、引数のまとめ方と表し方が異なります。たとえば、execl は次のように使用できます。
execl("/usr/bin/prog2", "prog2", progarg1, progarg2, (char (*)0));
execl 引数リストは、次のとおりです。
/usr/bin/prog2 |
新しいプロセスファイルのパス名 |
prog2 |
新しいプロセスが argv[0]に取り込む名前 |
progarg1 progarg2 |
prog2 への char (*) 型の引数 |
(char (*)0) |
引数の終わりを示す NULL の char ポインタ |
詳細は、execl(2) のマニュアルページを参照してください。
exec() が正常に実行されるといかなる時でも、復帰はありません。新しいプロセスが exec を呼び出したプロセスを上書きしてしまうためです。新しいプロセスは、古いプロセスのプロセス ID やその他の属性を引き継ぎます。exec の呼び出しが失敗すると、制御は呼び出しプログラムに戻され、戻り値 -1 が返されます。errno をチェックすれば、失敗した理由がわかります。