Vi isso acontecer comigo quando copiei arquivos de um disco rígido para outro por meio de uma conexão como o NFS ou um túnel SSH.
O que acontece é que o arquivo que está sendo copiado se torna parte do diretório de destino. Isso significa que o diretório de destino precisa ser bloqueado, atualizado com as novas informações e desbloqueado.
Se o próximo arquivo (que no seu caso seria libtiny.a
) chegar muito cedo, ele tentará bloquear o diretório e falhar com o erro "Arquivo ocupado". Isso, então, impede a cópia desse arquivo e mais alguma coisa.
Como libtiny.a
é uma biblioteca estática, não há motivos para que ela seja bloqueada contra uma cópia. Até onde sei, o compilador não bloqueia os arquivos em que está trabalhando, e realmente só aconteceria se você estivesse compilando algo nos diretórios de destino ...
Agora, isso supõe que todos os discos usem um sistema de arquivos normal . Se você usou o NTFS, os arquivos não poderão ser substituídos enquanto estiverem abertos, porque esse sistema não permite que isso aconteça.
No Linux, a abertura de um arquivo bloqueia os dados desse arquivo, mas não impede que você o desvincule, renomeie e substitua. Se o arquivo foi excluído, os dados bloqueados serão liberados do disco rígido assim que todas as alças desse arquivo forem fechadas.
Isso significa que você pode escrever um programa que, quando executado, será excluído do disco rígido e continuará a funcionar como se nada tivesse acontecido.