Descargo de responsabilidad :No sé mucho sobre QNX, y menos aún sobre dispositivos integrados.
Lo que está preguntando es básicamente sobre el bloqueo de archivos :Un proceso intenta adquirir un bloqueo compartido (bloqueo de lectura )en un archivo de bloqueo para realizar algunas operaciones. Si otro proceso mantiene un bloqueo exclusivo (de escritura )en el mismo bloqueo, el primer proceso se bloqueará hasta que se libere el bloqueo exclusivo. o al revés,un proceso puede adquirir un bloqueo exclusivo solo si no hay otros procesos con bloqueos compartidos/exclusivos activos compartidos.
Para realizar el bloqueo de archivos obligatorio , esto debe ser compatible con el núcleo. Hay muy pocos sistemas Unix que implementen esto de una manera que funcione de manera confiable desde un script de shell (para Linux, consulte este texto de 2007 y esta pregunta en StackOverflow ).
El bloqueo de aviso se implementa en el espacio de usuario mediante programas como flock
. Este tipo de bloqueo de archivos requiere que los procesos cooperen , lo que significa que deberán solicitar explícitamente acceso de lectura o escritura al archivo de bloqueo. Al mismo tiempo, un proceso no cooperativo aún puede ignorar el mecanismo de bloqueo.
La pregunta " Flock no parece estar funcionando " es sobre el bloqueo de aviso usando flock
en el shell.
Ver también:¿Qué comandos de Unix se pueden usar como semáforo/bloqueo?(esto también se trata de bloqueo de aviso, y algunas respuestas usan mkdir
para este propósito, ya que es una operación atómica ).
Неважно, я просто тупой. Я думаю, что он работал с использованием неправильного bash, поэтому [[
не был распознан.
Добавление #!/bin/bash
шебанга, похоже, исправило ситуацию.
Я просто забыл, что >>
перенаправляет только stdout
и не смог найти никаких ошибок из-за этого.