在perl中自动删除子进程中的临时文件

时间:2016-09-19 10:21:13

标签: perl unlink

我在perl脚本中分叉并在fork()之后退出父进程。 在子进程中,我在函数

中通过此方法创建临时文件
my ( $S_TEMP_FILE,  $stmpfile )  = tempfile( UNLINK => 1, DIR => $TMPDIR );

现在的问题是,当我退出函数时,这个临时文件不会被自动删除。我在分叉之前创建了一些临时文件,但是在退出函数时它们会被自动删除。我已经完成了所有关于此的链接但是我无法弄清楚这种行为的原因。

1 个答案:

答案 0 :(得分:3)

tempfile创建的文件“在程序退出时自动删除”,而不是在某些子程序退出时。

请注意,如果程序调用{​​{1}}或者它被信号杀死,程序将无法删除这些文件。

如果您希望较早删除该文件,则需要自行删除该文件,或使用_exit代替File::Temp->new()。 (当销毁对象时,将删除tempfile创建的文件。)