В документации по perl есть несколько мест, которые предостерегают от использования сна в сочетании с тревогой, поскольку сон может быть реализован через тревогу. Однако в документации не указано, какие симптомы следует ожидать, если это относится к вашей системе.
Я могу обнаружить это, используя этот конвейер оболочки (идея из этого другого вопроса ):
strace perl -e 'sleep 1' 2>&1 | grep 'sleep\|alarm'
Если спящий режим реализован с помощью будильника, на выходе вы увидите системный вызов будильника. В противном случае вы увидите другой системный вызов сна, подобный следующему из Ubuntu 10.04.2:
execve("/usr/bin/perl", ["perl", "-e", "sleep 1"], [/* 26 vars */]) = 0
nanosleep({1, 0}, 0xbfacba54) = 0
Тем не менее, я ищу краткий чистый Perl-код (предпочтительно один строчный), чтобы обнаружить его вместе с тем, что вы должны ожидать увидеть, если тревога лежит в основе сна, и что ожидать, если это не так.
Примечание:
- Этот вопрос не о том, как не дать тревоге прервать сон. Это было спросил и ответил .
- Не ищем обходных путей, когда сон осуществляется с помощью тревоги. Возможно, вы можете спросить и ответить на этот вопрос по другому вопросу.
- Это не вопрос игры в гольф. Я не ищу самый краткий способ.
- Я не делаю этого для любого производственного кода, это просто любопытство.