Как составить список и уничтожить потоки / процессы в Perl без использования внешних команд? - PullRequest
2 голосов
/ 07 марта 2012

Мне нужно убить некоторых процессов и потоков (если существует) в Perl приложении, но я не хочу использовать внешние командынапример, ps, grep, awk, cut, uniq или kill.

Мой текущий код:

      my $appName = $0;
      $appName =~ s/^.*\/([^\/]*)$/$1/;
      $_ = qx(kill -9 `ps -eLao pid,command | grep '$appName\[ 0-9\]*\$' |
              grep -v grep | awk '\$1 != $$' | cut -d' ' -f1 | uniq` 2>&1);

Я использую VPS, так что моя память ограничена.Приведенный выше код иногда возвращает undef, так как система не может выделить память для вызова внешних команд.Я ищу альтернативное решение без использования внешних команд.

1 Ответ

5 голосов
/ 07 марта 2012

Используйте внутренние команды kill, такие как kill и /proc fs, или некоторые модули, такие как Win32::Process::List или что-нибудь в пространстве имен Proc::.

...