3 번 자식 프로세스에 신호를 보내야합니다.좀비 상태를 피하면서 자녀에게 여러 번 신호를 보내려면 어떻게해야합니까? C 언어
문제는 어린이가 신호를 한 번받은 다음 좀비로 변하는 것입니다. 나는 아이 11385 해요
을 그리고 난 내가 아이 11385 해요
SIGUSR1
받은 나는 아이 11,385 그리고 난SIGUSR1
받은 :예상 출력 될 것이다 SIGUSR1
받은하지만 실제 출력은 다음과 같습니다 나는 아이 11385 해요
와 나는 SIGUSR1
01받은#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/wait.h>
void my_handler()
{
printf("\n I'm the child %i and i received SIGUSR1\n", getpid());
}
int main (int argc, char **argv) {
int *array;
int N = 10;
int i;
pid_t pid1;
array=(int*)malloc(sizeof(int)*N);
signal(SIGUSR1,my_handler);
for (i = 0; i< N; i++)
{
pid1 = fork();
if(pid1 < 0)
{
exit(EXIT_FAILURE);
}
else if (pid1 > 0)
{
array[i]= pid1;
}
else
{
sleep(100);
exit(EXIT_SUCCESS);
}
}
i=0;
while(i<3) // I need to call the son 3 times
{
kill(array[1], SIGUSR1);
i++;
}
}
'무효 my_handler()'- >>'무효 my_handler (INT의 부호 요소가)'도 그리고 [잘못된 서명으로, 신호 처리기의 반환을 효과적으로 자녀를 죽이는] : 당신 시그널 핸들러 내부에서 printf()를 호출해서는 안된다. – wildplasser
@wildplasser 코드는 특정 신호에 대한 예제이므로 인수가 없습니다. printf도 예제이며 실제 문제는 아닙니다 :/ –
하지만 스택을 방해하는 ** 인수 **가 있습니다 (반환시) – wildplasser