Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 如何杀死子进程并释放内存?_Perl_Memory Leaks_Kill - Fatal编程技术网

Perl 如何杀死子进程并释放内存?

Perl 如何杀死子进程并释放内存?,perl,memory-leaks,kill,Perl,Memory Leaks,Kill,我正在使用创建许多子进程,然后使用kill'kill'、$for$pm->running_procs杀死它们,但是这样做会造成很大的内存泄漏: 请注意,在伪进程()上使用kill('kill',…)通常可能会 导致内存泄漏,因为实现 伪进程没有机会清理其资源 资料来源: 如何才能杀死子进程而不导致大内存泄漏?您必须手动杀死它们吗?上次我查看时,发现可能没有一种方法可以“温和地”杀死windows上的进程。我的意思是说,最好的方法似乎是system(“taskkill/t/pid$pid”)。请参

我正在使用创建许多子进程,然后使用
kill'kill'、$for$pm->running_procs
杀死它们,但是这样做会造成很大的内存泄漏:

请注意,在伪进程()上使用kill('kill',…)通常可能会 导致内存泄漏,因为实现 伪进程没有机会清理其资源

资料来源:


如何才能杀死子进程而不导致大内存泄漏?

您必须手动杀死它们吗?上次我查看时,发现可能没有一种方法可以“温和地”杀死windows上的进程。我的意思是说,最好的方法似乎是
system(“taskkill/t/pid$pid”)。请参阅链接文章。@zdim这是一个基于Unix的系统哦。。。doc链接是关于在Windows上模拟fork的,而“pseudo process”短语也是关于这一点的。如果您在UNIX上,您不想(永远)发送
SIGKILL
信号(Perl中的
KILL
),原因正是如此。发送
SIGTERM
Perl中的TERM
),允许进程执行(一些)清理。然后,在这些子进程中,您为
SIGTERM
编写了一个信号处理程序,您可以根据需要关闭它。如果这些是外部命令,您希望它们在
SIGTERM
上清理。再仔细想想,我不知道Perl(解释器)如何处理
SIGTERM
——请先在没有处理程序的情况下尝试,也许它会运行全局销毁。如果没有,则添加带有
die
的处理程序。如果这不起作用,那么你可能需要做更多的事情。你必须亲手杀死他们吗?上次我查看时,发现可能没有一种方法可以“温和地”杀死windows上的进程。我的意思是说,最好的方法似乎是
system(“taskkill/t/pid$pid”)。请参阅链接文章。@zdim这是一个基于Unix的系统哦。。。doc链接是关于在Windows上模拟fork的,而“pseudo process”短语也是关于这一点的。如果您在UNIX上,您不想(永远)发送
SIGKILL
信号(Perl中的
KILL
),原因正是如此。发送
SIGTERM
Perl中的TERM
),允许进程执行(一些)清理。然后,在这些子进程中,您为
SIGTERM
编写了一个信号处理程序,您可以根据需要关闭它。如果这些是外部命令,您希望它们在
SIGTERM
上清理。再仔细想想,我不知道Perl(解释器)如何处理
SIGTERM
——请先在没有处理程序的情况下尝试,也许它会运行全局销毁。如果没有,则添加带有
die
的处理程序。如果这不起作用,那么你可能需要做更多。