Основная идея о том, что я пытаюсь сделать:Принуждение обработчик сигнала будет вызываться каждый 1 второй (в C)
Моя цель состоит в том, что alarm_handler будет называться 1 раз в секунду, несмотря на другие сигналы (в этом случае SIGUSR2). Для этого я написал сигнал тревоги (1) перед операцией pause().
Но, что происходит на самом деле, заключается в том, что если я получаю сигнал SIGUSR2 много раз, alarm_handler никогда не вызывается (в то время как я хочу, чтобы он вызывался каждую секунду).
Примечание: Я не хочу игнорировать сигналы SIGUSR2. Я хочу, чтобы они были сделаны, но я должен убедиться, что alarm_handler выполняется каждую секунду.
Вот основные:
int main(int argc, const char* argv[])
{
signal(SIGUSR2, sig_readPipe);
signal(SIGALRM, alarm_handler);
do
{
alarm(1);
pause();
}while(stopFlag);
return 0;
}
А вот обработчики сигналов:
void sig_readPipe(int sig)
{
signal(SIGUSR2, sig_readPipe);
.
.
.
}
void alarm_handler(int sig)
{
signal(SIGALRM, alarm_handler);
.
.
.
}
Как установить счетчик в глобальное время? – Jjang
не работал для меня .. не могли бы вы написать, как это должно быть сделано? – Jjang