У меня есть код c, который использует функции fork и execvp. Цель кода — скопировать src_file в target_path после завершения копирования, уведомить пользователя о его статусе. (распечатать сообщение)
Я знаю, что использование execvp заменит текущий образ процесса. что я хотел знать, так это то, есть ли какие-либо альтернативы, например, чтобы после завершения cmd, данного execvp, управление возвращалось в мою программу и запускало последующий код.
pid = fork();
if (pid == 0) {
/* child path */
printf("Hello, This is CHILD(%d).\n", getpid());
execvp("cp", av);
printf("Completed Copying\n");
}
else {
/* Parent's path */
printf("Hello, This is PARENT(%d).\n", getpid());
wait(NULL);
}
execvp
заменяет текущую программу, а не текущий процесс. Вот как наследуются такие вещи, как блок среды, таблица дескрипторов файлов (например, перенаправление оболочки), UID, umask и т. д. - person cdarke   schedule 23.10.2012