Я пытаюсь выполнить другой процесс командной строки параллельно с текущим процессом.Тем не менее, я понимаю, что программа командной строки иногда ненормально завершается, и это также убивает мою основную программу.
// MAIN PROGRAM
pid = fork();
char *argv[] = { stuff.. };
if (pid == 0) {
int rc = execv("command line program...", argv);
}
// DO OTHER STUFF HERE.
if (pid > 0) {
waitpid(pid, 0, 0);
}
Есть ли способ сохранить работоспособность моей основной программы после того, как программа командной строки ненормально умерла?Спасибо!
[ОБНОВЛЕНИЕ]: Да, основной процесс пишет в файл, из которого читается командная строка, но это обычный файл, а не канал.Я получаю сообщение об ошибке.
Мне очень трудно воспроизвести ошибку, так как дочерний процесс не очень часто падает.Но это случается.Случайный сбой - это известная ошибка в программе командной строки, поэтому я хочу сохранить свою основную программу живой, даже если командная строка умрет.