multithreading - 如何在 Perl 中列出和终止线程/进程而不使用外部命令?

标签 multithreading perl shell process kill

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

我当前的代码是:

      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,因为系统无法为外部命令的调用分配内存。我正在寻找不使用外部命令的替代解决方案。

最佳答案

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

关于multithreading - 如何在 Perl 中列出和终止线程/进程而不使用外部命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9607022/

相关文章:

C# COM 对象和多线程

multithreading - 锁定 Perl 子例程

php - Perl pack() 函数和 "B"格式化字符到 Php

arrays - 如何从数组中删除所有 undef?

PHP system() 引发命令未找到错误

shell - 使用 awk 提取包含特定单词的行记录

c# - 如何在紧凑的框架中有效地发送调用和等待响应?

java - java中的线程等待

perl - 如何旋转和压缩 Log4perl 日志文件?

shell - 如何处理 JMESPath 包含可能为空的属性的过滤器?