如何在不使用外部命令的情况下列出和终止Perl中的线程/进程?

时间:2012-03-07 18:23:35

标签: multithreading perl shell process kill

我需要杀死 Perl 应用程序中的某些进程和线程(如果存在),但我不想使用外部命令(s),例如psgrepawkcutuniqkill

我目前的代码是:

      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 个答案:

答案 0 :(得分:5)

使用内部kill命令,例如kill/proc fs或某些模块,例如Win32::Process::ListProc::名称空间中的任何内容。