Perl:撤消文件打开时取消链接
发布时间:2020-12-15 21:44:32 所属栏目:大数据 来源:网络整理
导读:unlink不会删除文件,如果它是打开的;它只是删除名称和名称的链接.取消联系可以解除吗? open(my $fh,"",undef) || die;print $fh "foo";# This does not worklink($fh,"/tmp/bar") || die; 可以将未链接文件的打开文件句柄链接到文件吗? 解决方法 如果可行,
unlink不会删除文件,如果它是打开的;它只是删除名称和名称的链接.取消联系可以解除吗?
open(my $fh,">",undef) || die; print $fh "foo"; # This does not work link($fh,"/tmp/bar") || die; 可以将未链接文件的打开文件句柄链接到文件吗? 解决方法
如果可行,您可以将打开模式(‘>’)更改为可读/写.然后,当您需要恢复文件时,您可以使用文件句柄将其打印到新打开的文件,即使需要时也使用相同的名称.
open my $fh,'+>',$file; say $fh "line 1"; unlink $file; say $fh "more lines"; seek $fh,0; open my $fh_rec,'>',$file or die "Can't open $file (again): $!"; print $fh_rec $_ while <$fh>; 这不是所要求的,但它恢复了文件内容和访问权限 恢复文件的另一种方法是使用操作系统,如果它使用/ proc并公开文件句柄.然后可以从/ proc / PID / fd / N复制数据.要识别N,可以使用ls -l扫描fd /(少数)中的所有链接,因为删除的文件应在其名称后面(已删除). 此外,lsof -p PID列出给定进程的所有打开文件描述符.已删除文件的文件已删除(已删除). (lsof L1 -p PID仅输出已删除的条目,但仍有不少.)从此输出中,我们可以读取该文件描述符,然后从/ proc / PID / fd / N复制数据.这样我们也可以获得inode编号,也可用于恢复文件. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |