Eu não apostaria nisso, especialmente em um sistema multiencadeado ocupado ou se o local de despejo estiver em um compartilhamento de rede (memoravelmente, um professor geraria 8 GB de arquivos principais que precisavam ser armazenados em spool através de 10Mbit ethernet via NFS) . A atomicidade do sistema de arquivos geralmente requer o bloqueio ou o truque de gravação para um arquivo temporário e, em seguida, rename(1)
. Algumas investigações em fs/coredump.c
para o kernel do linux 4.3.3 indicam que não tais truques de bloqueio ou renomeação, como o kernel descobre o nome do arquivo a ser usado (com uma condição de corrida de desligamento!) e, em seguida, decodifica o arquivo:
file_start_write(cprm.file);
core_dumped = binfmt->core_dump(&cprm);
file_end_write(cprm.file);
Já que provavelmente não há bloqueio de kernel gigante para impedir que outras coisas de usuários rodem enquanto o acima está fazendo o seu negócio (isso pode ser testado abrandando a geração de um grande arquivo central e vendo como o sistema se comporta) Eu não vejo nada atômico sobre esse processo.