Я получаю ошибку сегментации в следующей программе. Почему? И как его решить?ошибка сегментации в программе c в linux
#include <stdio.h>
main()
{
int pid;
printf("I'm the original process with PID %d and PPID %d.\n", getpid(),getppid());
pid=vfork();
if (pid!=0)
{
printf("I'm the parent process with PID %d and PPID %d.\n",getpid(),getppid());
printf("My child's PID is %d.\n", pid);
}
else
{
printf("I'm the child process with PID %d and PPID %d.\n",getpid(),getppid());
}
}
Выход:
I'm the original process with PID 18563 and PPID 18500.
I'm the child process with PID 18564 and PPID 18563.
I'm the parent process with PID 18563 and PPID 18500.
My child's PID is 18564.
Segmentation fault
Это сработало для меня. Ошибка сегментации. –
Отсутствие ошибки сегментации для меня тоже ... Это ваш код или просто упрощенный пример? – smagnan
мужчина vfork. Важная деталь: «Ребенок не должен возвращаться из текущей функции или вызывать exit (3), но может вызывать _exit (2)». а также: «До этого момента ребенок разделяет всю память с родителем, включая стек». Случается, что возврат из основного дочернего элемента перемещает указатель стека. В зависимости от того, что произойдет дальше, вы получите SEGV у родителя или нет. В простом примере шансы всего хорошего – Ronald