Usar um filehandle em um nome de arquivo excluído é um método legítimo de acesso a arquivos; Isso ajuda a garantir que nada mais possa (facilmente) acessar ou interagir com o file-that-is-now-only-held-aberto-pelo-filehandle. No entanto, não há nada para distinguir esse caso de uso de um bug oops-deleted-yet-open sem entender o código que está gerando aqueles arquivos temporários. Em outras palavras, os arquivos excluídos, mas abertos, podem ser totalmente legítimos.
O módulo Perl Arquivo :: Temp , por exemplo, desativa o arquivo temporário por padrão se apenas o filehandle (e não o nome do arquivo) for solicitado:
$ perl -MFile::Temp=tempfile -e 'my$fh=tempfile("qqqqXXXXXXXXXX");sleep 999' &
[1] 67001
$ lsof | grep qqqq
perl5.24 67001 jdoe 3u REG 1,2 0 65834304 /Users/jdoe/qqqq4mnuKXT3fS
$ file /Users/jdoe/qqqq4mnuKXT3fS
/Users/jdoe/qqqq4mnuKXT3fS: cannot open '/Users/jdoe/qqqq4mnuKXT3fS' (No such file or directory)
$ fg
perl -MFile::Temp=tempfi
^C
$
E agora, com um nome de arquivo solicitado, o arquivo não é automaticamente desvinculado:
$ perl -MFile::Temp=tempfile -e 'my($fh,$name)=tempfile("qqqqXXXXXXXXXX");sleep 999' &
[1] 67012
$ lsof | grep qqqq
perl5.24 67012 jdoe 3u REG 1,2 0 65834307 /Users/jdoe/qqqqEvy9FFVnLQ
$ file /Users/jdoe/qqqqEvy9FFVnLQ
/Users/jdoe/qqqqEvy9FFVnLQ: empty
$