我需要在Perl应用程序中杀死一些进程和线程(如果存在),但我不想使用外部命令(s) 例如 ps
、grep
、awk
、cut
、uniq
或杀死
。
我当前的代码是:
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::List
或 Proc::
命名空间中的任何内容。
关于multithreading - 如何在 Perl 中列出和终止线程/进程而不使用外部命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9607022/