Я пытаюсь создать дочерний процесс с помощью fork()
системного вызова, затем пытаюсь отправить сигнал родителю и распечатать что-то на экране.
Вот мой код: -
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <sys/types.h>
#include <unistd.h>
void func1(int signum) {
if(signum == SIGUSR2) {
printf("Received sig from child\n");
}
}
int main() {
signal(SIGUSR2, func1);
int c = fork();
if(c > 0) {
printf("parent\n");
}
else if(c == -1) {
printf("No child");
}
else {
kill(getppid(), SIGUSR2);
printf("child\n");
}
}
Когда я выполняю свою программу, все, что я получаю, это: -
child
Segmentation fault (core dumped)
Я новичок в системных вызовах языка Си, и не понимаю, почему это происходит, и как получить желаемый результат, который будет выводить все три оператора printf
. Любая помощь для того же будет приветствоваться.