Embora a criação de um bloqueio possa ser feita com o comando lockfile
ou a chamada de sistema flock
ou pela criação de um diretório (que é uma ação não interoperável), a segunda parte é mais complicada.
Se o bloqueio existir - como você determina se o bloqueio pertence a um processo ainda em execução?
A solução mais comum é colocar o PID do processo no arquivo de bloqueio.
Antes de tentar criar um bloqueio, você deve verificar se o arquivo de bloqueio já existe. Em caso afirmativo, verifique se o PID corresponde a um processo em execução que se assemelha ao processo que deve criar o bloqueio. Se este não for o caso, remova o bloqueio e recrie-o.