私の単純なカスタム シェルでは、標準入力からコマンドを読み取り、execvp() で実行しています。この前に、現在のプロセスのフォークを作成し、その子プロセスで execvp() を呼び出し、その直後に exit(0) を呼び出します。
このようなもの:
pid = fork();
if(pid == -1) {
perror("fork");
exit(1);
}
if(pid == 0) {
// CHILD PROCESS CODE GOES HERE...
execvp(pArgs[0], pArgs);
exit(0);
} else {
// PARENT PROCESS CODE GOES HERE...
}
さて、execvp() で実行されるコマンドはエラーを返しますよね? 私はそれを適切に処理したいと思っています。現在、私は常に exit(0) を呼び出しています。これは、子プロセスが常に「OK」状態になることを意味します。
execvp() 呼び出しから適切なステータスを返し、それを exit() 呼び出しに入れるにはどうすればよいですか? execvp() が返す int 値を取得し、それを 0 ではなく exit() 引数として渡す必要があります。それで十分ですか?