В моей простой пользовательской оболочке я читаю команды со стандартного ввода и выполняю их с помощью 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), что будет означать, что дочерний процесс всегда будет иметь состояние "ОК".
Как я могу вернуть правильный статус из вызова execvp() и поместить его в вызов exit()? Должен ли я просто получить значение int, которое возвращает execvp(), и передать его как аргумент exit() вместо 0. Это достаточно и правильно?