Я сделал эту программу, и вывод пока не имеет особого смысла для меня.Может кто-нибудь объяснить, что происходит?
void handler1a(int x){
printf("A\n");
}
int main(){
signal(SIGUSR1, handler1a);
int p = fork();
if(p==0)
{
sleep(5);
printf("L \n");
}
else
{
kill(0,SIGUSR1);
kill(0,SIGUSR1);
kill(0,SIGUSR1);
//kill(0,SIGUSR1);
wait(NULL);
}
}
С 3 сигналами уничтожения мой выход - 5A и 1L.С 2 сигналами уничтожения выход - 4A и 1L.С 4 сигналами убивания, выход - 6А и 1л.Кажется, что до 2 сигналов уничтожения, и родительский, и дочерний процессы используют мой пользовательский обработчик, но каким-то образом один из них не использует обработчик или не получает сигнал уничтожения после получения сигнала, который он уже дважды (это объясняет, почему толькоодна буква A печатается, когда я добавляю еще один системный вызов kill после 2 системных вызовов kill).