GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo hacer que una función sea segura para la señal asíncrona?

Puede usar fcntl() como alternativa a flock().


flock() es generalmente seguro para señales asíncronas porque es una llamada al sistema. Su semántica hace que sea difícil implementarlo de manera diferente. No está en la lista de funciones seguras de señal asíncrona de POSIX porque no está en POSIX en absoluto.

Es probable que no necesite el desbloqueo explícito porque flock() los bloqueos se liberan automáticamente cuando se cierran todos los descriptores de archivo que hacen referencia a la descripción del archivo abierto.

El printf() y fprintf() las llamadas deben reemplazarse con write() apropiado llamadas Las funciones de stdio no están en la lista de funciones seguras para señales asíncronas y, a menudo, no son seguras para señales asíncronas.

El abort() probablemente la mejor forma de reemplazar la llamada es establecer la señal en la acción predeterminada y volver a enviarla a sí mismo; de esta manera, los shells saben que su programa se cerró debido a la señal y pueden abortar las secuencias de comandos cuando corresponda.


Linux
  1. Cómo hacer que los enlaces permanentes de WordPress funcionen en Nginx

  2. ¿Cómo hacer que un directorio compartido sea accesible mediante Sftp?

  3. ¿Cómo hacer que Startx use Xinitrc alternativo?

  4. Cómo hacer una VPN

  5. C++ 11:¿Cómo crear un alias de una función?

Cómo hacer que Raspberry Pi arranque en la GUI de forma predeterminada

Cómo hacer un GIF en GIMP [Tutorial simple]

¿Cómo hacer que Ultracopier maneje la función de cortar, copiar y pegar en Nautilus?

Cómo hacer un sitio web en el panel de control de Vesta

Cómo convertir a un usuario en administrador en Debian 11

Cómo hacer un servidor de Minecraft en distribuciones de Linux