Isenção de responsabilidade: não sei muito sobre o QNX e muito menos sobre dispositivos incorporados.
O que você está perguntando é basicamente sobre o bloqueio de arquivo: Um processo tenta adquirir um bloqueio compartilhado (bloqueio de leitura) em um arquivo de bloqueio para executar algumas operações. Se um bloqueio exclusivo (bloqueio de gravação) for mantido no mesmo bloqueio por outro processo, o primeiro processo será bloqueado até que o bloqueio exclusivo seja liberado. Ou invertido, um processo pode adquirir um bloqueio exclusivo somente se não houver outros processos com bloqueios compartilhados / exclusivos ativos compartilhados.
Para fazer obrigatório bloqueio de arquivos, isso tem que ser suportado pelo kernel. Existem muito poucos sistemas Unix que implementam isso de uma maneira confiável a partir de um script de shell (para Linux, veja este texto de 2007, e esta questão no StackOverflow).
O bloqueio de
Advisory é implementado no espaço do usuário por programas como flock
. Esse tipo de bloqueio de arquivo requer processos para cooperar , o que significa que eles precisarão solicitar explicitamente o acesso de leitura ou gravação ao arquivo de bloqueio. Ao mesmo tempo, um processo não cooperativo pode ainda ignorar o mecanismo de bloqueio.
A pergunta " Flock parece não estar funcionando "é sobre bloqueio consultivo usando flock
no shell.
Veja também: Quais comandos Unix podem ser usado como um semáforo / bloqueio? (isso também é sobre bloqueio de aviso, e algumas respostas estão usando mkdir
para essa finalidade, pois é uma operação atômica).