Я не понимаю, почему мой код не работает.Что нужно сделать, чтобы изменить мою функцию fork() в C, чтобы работать хорошо?
Это мой код. Я не знаю, почему у меня возникает сегмент ошибок. Может ли кто-нибудь объяснить мне причину?
#include <iostream>
#include <string>
#include <sys/types.h>
#include <unistd.h>
int id_process;
void manager_signal() {
kill (id_process, SIGKILL);
kill (getppid(),SIGKILL);
}
int main() {
id_process = fork();
if (id_process==-1) {
perror("ERROR to create the fork");
} else {
if (id_process != 0) {
printf("Father´s ID is %d \n", getpid());
alarm(5);
(void) signal (SIGALRM, manager_signal);
sleep (20);
printf ("Running to where the father can be\n");
alarm (0);
} else {
printf ("CHildren´s ID is %d \n", getpid());
for (;;) {
printf ("Children RUN FOREVER ^^");
sleep (2);
}
}
}
return 0;
}
Это домашнее задание? – ojblass
Может быть домашнее задание. Или просто может быть кто-то, кто начнет изучать C/UNIX. Я оставлю это до роя, чтобы решить, но я дам им преимущество сомнений. – paxdiablo
Этот вопрос не должен быть помечен как «обработка сигнала». Это понятная ошибка, но кто-то с более высокой репутацией, чем я должен повторить этот вопрос. –