/* テストプログラム */上のテストプログラムを実行すると、"start!"は表示されても"end!"は表示されません。こ れは、execlp関数を呼び出した時点でテストプログラムは終了し、lsプログラムが実行さ れるからです。(ただし、lsコマンドが無い等の理由でexeclp関数が失敗すると"end!"が表 示されます)
int main()
{
printf("start!\n");
execlp("ls","ls","-al",NULL);
printf("end!\n");
return 0;
}
int pid;forkと併せて利用した例は上のような感じになります。forkとexec関数を使用すればラン チャー(他のプログラムを簡単に起動させるソフト)のような物をすぐに作ることができま す。sigignore( SIGCLD ); /*子プロセスは勝手に死亡するようにする(forkを使うときのお まじない。そのうち解説します)*/
if( (pid=fork()) < 0 ){
/* fork 失敗よ〜 */
return -1;
} else if( pid == 0 ){
/* 新しく起動した子プロセスに処理させたい内容 */execlp("ls","ls","-al",NULL);
/* execlp失敗 */
exit( -1 ); /* 子プロセス異常終了 */
}/* 親プロセスの処理 */