У меня есть простой код:
pid_t newprocess = fork();
if (newprocess < 0){
perror ("fork");
exitValue = -1;
} else if (newprocess) {
// child
if(waitpid(newprocess,status,0) < 0) {
perror ("waitpid");
exitValue = -1;
}
if(WIFEXITED(*status)) {
exitValue = WEXITSTATUS(*status);
} else {
if(WIFSIGNALED(*status))
printf ("exec failed: program terminated by signal %d\n", WTERMSIG(*status));
else if (WIFSTOPPED(*status))
printf ("exec failed: program stopped by signal %d\n", WSTOPSIG(*status));
exitValue = -1;
}
} else {
char *shell[] = {"/bin/sh", "-c", cmdline, NULL};
environ = envp;
execvp(shell[0], shell);
exitValue = errno;
showSystemErrorMessage (exitValue);
_exit(exitValue);
}
Все вроде бы нормально начинает работать, но периодически простые
программы типа unzip отваливаются с сообщением exec failed: program
terminated by signal 115.
Просто не знаю, на что подумать. Что за сигнал 155? Почему unzip
падает?
Кто-нибудь может сказать, в чем дело?
Спасибо.
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Непонятки с waitpid (2004)
- Форум как присвоить ребенку новую группу процесса? (2020)
- Форум Передача имени файла дочернему процессу (2017)
- Форум execl не принимает аргумент из pipe (версия 2, обновленная) (2015)
- Форум помогите найти ошибки в следующем перловом коде (2004)
- Форум Разработка своего shell'a (2012)
- Форум execve (2005)
- Форум kbhit, execve (2002)
- Форум python execve (2005)
- Статьи Как кушать вилкой. ... или о fork() в двух словах (2023)