Что-то я не пойму откуда беруться тормоза. Общий смысл такой. Делаю поисковый механизм по БД mysql. Результаты выборки сразу сбрасываются во внешний файл. Запрос mysql я запускаю в форке - фоном. В основном процессе отслеживаю либо завершение запроса, либо наличие в файле результата определенного количества строк. Схема кода: if (...) { ... $SIG{CHLD} = 'IGNORE'; my $pid = fork(); if ($pid eq '0') { $r->cleanup_for_exec(); open STDIN, '/dev/null' or die "Can't read /dev/null: $!"; open STDOUT, '>/dev/null' or die "Can't write to /dev/null: $!"; open STDERR, '>/tmp/log' or die "Can't write to /tmp/log: $!"; my $setsidres = POSIX::setsid(); eval { $dbho->do($sql); }; open(FF, ">".$finishfile); print FF time(); close(FF); CORE::exit(0); }; ... open(LOG, ">>/tmp/fork_search.log"); print LOG time(), ": ok1...\n"; close(LOG); }; open(LOG, ">>/tmp/fork_search.log"); print LOG time(), ": ok2...\n"; close(LOG); Вот в данном случае между двумя последними выводами в LOG проходит много времени, а конкретно - пока не завершиться процесс-потомок. Может я что-то упустил? Почему выполнение второго вывода в лог привязано к завершению дочернего процесса?