Из SELECT_TUT:
"... используется для эффективного мониторинга нескольких файловых дескрипторов, чтобы увидеть, является ли какой-либо из них или становится "готовым"; то есть, чтобы увидеть, становится ли возможным ввод-вывод или возникло "исключительное состояние" для любого дескрипторов....
Итак, в чем смысл select()? Разве я не могу просто читать и писать в свои дескрипторы, когда захочу? Суть метода select() в том, что он одновременно наблюдает за несколькими дескрипторами и корректно переводит процесс в спящий режим при отсутствии активности. Программисты Unix часто оказываются в ситуации, когда им приходится обрабатывать ввод-вывод из более чем одного файлового дескриптора, когда поток данных может быть прерывистым. Если бы вы просто создали последовательность вызовов read(2) и write(2), вы бы обнаружили, что один из ваших вызовов может блокировать ожидание данных из/в файловый дескриптор, в то время как другой файловый дескриптор не используется, хотя и готов к I. /О. select() эффективно справляется с этой ситуацией."
Может ли кто-нибудь объяснить мне, что это значит и как это работает, может быть, с небольшим примером.
Например здесь выбран только один файл-хэндл, зачем мне мониторинг?
my $timeout = 10;
my ( $in, $out ) = ( '', '' );
vec( $in, fileno( STDIN ), 1 ) = 1;
select( $out = $in, undef, undef, $timeout );