現在、子プロセスを実行する必要がある C プログラムを作成しています。私は複数の子プロセスを同時に実行していないので、これはかなり簡単です。ビルトイン シェル プログラム (つまり、cat や echo など) は間違いなく正常に実行されていますが、これらのプログラムのいずれかが正常に実行されなかった場合に通知できるようにする必要もあります。次の簡略化されたコードでこれを試しています。
int returnStatus; // The return status of the child process.
pid_t pid = fork();
if (pid == -1) // error with forking.
{
// Not really important for this question.
}
else if (pid == 0) // We're in the child process.
{
execvp(programName, programNameAndCommandsArray); // vars declared above fork().
// If this code executes the execution has failed.
exit(127); // This exit code was taken from a exec tutorial -- why 127?
}
else // We're in the parent process.
{
wait(&returnStatus); // Wait for the child process to exit.
if (returnStatus == -1) // The child process execution failed.
{
// Log an error of execution.
}
}
例えば、rm fileThat DoesntExist.txt を実行しようとすると、ファイルが存在しないので失敗と見なしたいと思います。どうすればこれを達成できますか? また、その execvp() 呼び出しは組み込みのシェル プログラムを正常に実行しますが、実行可能ファイルの現在のディレクトリ (つまり、このコードが内部で実行されているプログラム) 内のプログラムは実行しません。現在のディレクトリでプログラムを実行するために他に何かしなければならないことはありますか?
ありがとう!