Если я отправлю несколько последующих Hangup
сигналов в следующую программу, будут обработаны только два из них, а остальные будут игнорироваться:
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
int id;
void handler(int s)
{
id++;
int i;
for(i=0; i<3; i++)
{
printf("Sig %d\n", id);
sleep(2);
}
}
int main()
{
int i;
signal(SIGHUP, handler);
for( i=0; ; i++ )
{
printf("%d\n", i);
sleep(1);
}
return 0;
}
Я использую следующую команду для отправки сигнала процессу:
kill -l {#process}
Если я выполню указанную выше команду три раза подряд, третий сигнал будет проигнорирован, как показано в следующем выводе:
0
1
2
3
4
5
6
7
Sig 1
Sig 1
Sig 1
Sig 2
Sig 2
Sig 2
8
9
10
11
12
Есть ли способ поймать третий сигнал тоже?