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

Ωme*_*ega 2 shell perl multithreading kill process

我要杀死一些进程和线程(如果存在)Perl的应用程序,但我不希望使用外部命令(一个或多个),比如ps,grep,awk,cut,uniqkill.

我目前的代码是:

      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);
Run Code Online (Sandbox Code Playgroud)

我正在使用VPS,所以我的记忆力有限.上面的代码有时会返回undef,因为系统无法为外部命令的调用分配内存.我正在寻找替代解决方案,而不使用外部命令.

Dan*_*Dan 5

使用内部kill命令kill/procfs或命名空间Win32::Process::List中的某些模块或任何模块Proc::.