Diretório temporário por processo

0

Existe um diretório de diretório "standard" temporário alocado para um processo individual que desaparece junto com o processo em si? Algo que parece com /proc/$pid/tmp ou /proc/self/tmp . Existem vários diretórios temporários: diretórios temporários globais do sistema, diretórios temporários específicos do usuário, persistentes e aqueles limpos na reinicialização, tmpfs baseado, etc.

Parece um bom senso ter um diretório temporário por processo, mas não consigo encontrar um.

    
por oᴉɹǝɥɔ 29.03.2017 / 20:45

2 respostas

2

Não, não há local padrão ou até mesmo vagamente comum para um arquivo temporário por processo. A razão é que os arquivos temporários por processo são muito incomuns. O ponto de um arquivo temporário é quase sempre trocar dados entre processos. Se um processo não precisar se comunicar com outros processos, ele poderá manter os dados em sua memória.

O que faria um pouco mais de sentido é um diretório temporário por processo cujos arquivos também são acessíveis a outros processos, mas que são removidos quando o processo é encerrado. No entanto, essa é uma operação bastante cara (em termos de complexidade de implementação): matar o processo teria que executar uma remoção recursiva de arquivos e diretórios, o que pode fazer coisas muito complexas, como fazer com que um ponto de montagem desapareça. O benefício seria bastante pequeno para algo que pode ser implementado em algumas linhas de shell.

#!/bin/sh
tmpdir=$(mktemp -d) || exit
the_real_program; ret=$?
rm -rf -- "$tmpdir"
exit $ret

Tecnicamente, o que você quer seria possível com o FUSE : faça o processo implementar um sistema de arquivos temporário através do driver FUSE . Mas, novamente, isso é muita complexidade para pouco benefício.

    
por 30.03.2017 / 01:19
0

Em suma: não. Os itens / proc são baseados em memória, e seria melhor se você usasse algo como / tmp oir / usr / tmp (ou similar) com um comando mktmp ou similar.

Como mencionado anteriormente, seria muito caro para o kernel mapear o espaço no caso, e a memória da sua máquina logo estaria esgotada.

Qualquer aplicativo que use arquivos temporários também deve fazer algumas tarefas domésticas, limpando depois de si mesmo.

    
por 30.03.2017 / 00:46