我在perl脚本中分叉并在fork()
之后退出父进程。
在子进程中,我在函数
my ( $S_TEMP_FILE, $stmpfile ) = tempfile( UNLINK => 1, DIR => $TMPDIR );
现在的问题是,当我退出函数时,这个临时文件不会被自动删除。我在分叉之前创建了一些临时文件,但是在退出函数时它们会被自动删除。我已经完成了所有关于此的链接但是我无法弄清楚这种行为的原因。
答案 0 :(得分:3)
tempfile
创建的文件“在程序退出时自动删除”,而不是在某些子程序退出时。
请注意,如果程序调用{{1}}或者它被信号杀死,程序将无法删除这些文件。
如果您希望较早删除该文件,则需要自行删除该文件,或使用_exit
代替File::Temp->new()
。 (当销毁对象时,将删除tempfile
创建的文件。)