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
的处理程序。如果这不起作用,那么你可能需要做更多。