У меня есть простой код: 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)
- Статьи Как кушать вилкой. ... или о fork() в двух словах (2023)
- Форум Мистика (2015)
- Форум Мистика (2005)