Я читал про вилку и, насколько я понимаю, процесс клонирован, но какой процесс? Сам сценарий или процесс, который запустил скрипт?Что происходит, когда процесс разветвляется?
Например:
Я бегу rTorrent на моей машине, и когда поток завершается, я скрипт работать против него. Этот сценарий извлекает данные из Интернета, поэтому требуется несколько секунд. За это время мой rtorrent-процесс заморожен. Так что я сделал вилку сценария с помощью следующей
my $pid = fork();
if ($pid == 0) { blah blah blah; exit 0; }
Если я запускаю этот скрипт из CLI, он возвращается к оболочке в течение одной секунды, пока он работает в фоновом режиме, точно так, как я предполагал. Однако, когда я запускаю его из rTorrent, он кажется еще медленнее, чем раньше. Итак, что именно было раздвоено? Был ли процесс rtorrent клонирован сам, и мой скрипт работал в этом, или мой скрипт был клонирован сам? Я надеюсь в этом есть смысл.
Пожалуйста, начните с публикации рабочего фрагмента perl. –
Попробуйте запустить rTorrent в strace и посмотрите, что он блокирует, когда работает ваш скрипт. Это может дать ключ. Я думал, что это может быть ждать() в процессе внука, но похоже, что поведение на самом деле невозможно, используя традиционные системные вызовы. – jdizzle