我正在使用 File::Temp 创建临时文件。当程序正常退出时,我的临时文件会自动删除。我希望当我的程序用 ctrl+c 停止时也会发生同样的情况。它不是。
这是一个演示我的问题的简单程序。
期望的行为是这样的。我怎样才能实现它?我在 Linux 上。
- 关闭文件句柄时不会删除临时文件(确定)
- 程序正常退出时临时文件被删除(好的)
- 当程序使用 ctrl+c 退出时临时文件被删除(不工作)
.
#!/usr/bin/perl -l
use warnings; use strict;
use File::Temp qw(tempfile tmpfile);
my $fh = File::Temp->new;
close $fh;
-f "$fh" || die "$fh does not exist";
print "hit enter and the file will be deleted";
print "hit ctrl+c and it won't";
print "verify with ls $fh after program exits";
readline STDIN;
编辑 1
我测试了 tempfile 的行为。似乎确认 Linux 支持我正在寻找的内容(将文件标记为临时/取消链接打开文件)。我似乎以某种方式理想化了 File::Temp 。
# program will die because os deletes tmpfile after close
my $fh = tempfile;
close $fh;
stat $fh || die;
readline STDIN;