Solicitação simultânea para criar diretórios

0

O que acontece se houver 2 solicitações simultâneas para criar um diretório no sistema de arquivos (quais são as diferenças relativas a esse problema entre as FSs knonw?)? Um solicitará sucesso e outro falhará com um erro ou outro pedido substituirá a primeira pasta (acho que, por padrão, seria estúpido. Somente se eu definir a opção para isso)? Estas operações são atômicas?

    
por static 07.03.2013 / 06:09

1 resposta

1

Um terá sucesso e um falhará. Isto é como por a manpage:

EEXIST: pathname already exists (not necessarily as a directory). This includes the case where pathname is a symbolic link, dangling or not.

A criação de um diretório é necessariamente atômica porque qualquer outro processo que esteja examinando o sistema ao mesmo tempo descobrirá que o novo diretório existe ou não. Não existe um diretório parcialmente criado.

Você não pode definir uma opção para fazer mkdir() sobrescrever os diretórios existentes. O comportamento estipulado pelo padrão quando você tenta criar um diretório que já existe é falhar com o código de erro citado acima.

    
por 07.03.2013 / 13:04