清除END功能

use*_*367 1 perl

我的perl脚本使用END函数来解除一些临时文件的链接.有时脚本会被用户中断或暂停,并且临时文件不会被删除.

在perl中处理这个的程序是什么?除非脚本完全运行或执行退出或骰子,否则end函数不起作用.

谢谢

Mor*_*kus 7

这里有两个方面.第一种方法是清理临时文件,如果你的程序干净利落.为此,您不必重新发明轮子,只需使用核心模块File :: Temp.它可以做很多事情,它的一个好处是它可以在变量被垃圾回收时删除临时文件.

另一方面是如果发生真正的程序崩溃(例如kill -9).在这种情况下,您的程序无法处理清理本身.你必须依靠操作系统为你做这件事.例如,几个Linux发行版清理/tmp/var/tmp定期清理.你也可以为你写一个帮助你的cron工作.

但请注意,并非所有Linux发行版都在/tmp(或/var/tmp)中清理.其他人只在启动过程中执行此操作.在机器运行时这样做可能会造成危险(程序仍在使用的文件可能会被意外删除).有像tmpreaper这样的工具可以帮助你.

如果你想要一个相当万无一失的方法,那么我建议你/tmp不要/var/tmp在其中一个下面使用你自己的子目录,而是使用像tmpreaper清理那个目录的工具.这样你就可以适当地确定只有程序的临时文件(而不是其他程序的临时文件)会受到清理的影响.