私は、子プロセスを作成してから execvp() を呼び出す偽のシェルを作成しています。通常のシェルでは、'hello' などの不明なコマンドを入力すると、'hello: Command not found.' が返されます。ただし、hello を execvp() に渡すと、デフォルトではエラーは返されず、何も起こらなかったように残りのプログラムを実行し続けます。実際に何も実行されていないかどうかを確認する最も簡単な方法は何ですか? ここに私のコードがあります:
if(fork() == 0)
{
execvp(cmd, args);
}
else
{
int status = 0;
int corpse = wait(&status);
printf(Child %d exited with a status of %d\n", corpse, status);
}
死体 < 0 の場合、それは未知のコマンドであることはわかっていますが、待機したくない場所 (コマンドの最後に & が入力された場合など) がリストされていないコード内の他の条件があります。助言がありますか?