execvp / fork - как отловить неудачные исполнения?

Прямо сейчас яЯ пишу программу на 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 fileThatDoesntExist.txt, я хотел бы считать, что сбой, так как файл не 'не существует. Как я могу сделать это? Кроме того, хотя этот вызов execvp () успешно выполняет встроенные программы оболочки, он не• выполнять программы в текущем каталоге исполняемого файла (то есть в программе, внутри которой выполняется этот код); Есть ли что-то еще, что я должен сделать, чтобы заставить его запускать программы в текущем каталоге?

Спасибо!

Ответы на вопрос(3)

Ваш ответ на вопрос