GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cuándo verificar EINTR y repetir la llamada de función?

¿Su aplicación está impulsada por eventos? (Lo que significa que su ciclo principal incluye select()/epoll_wait() llamar).

En una aplicación basada en eventos, puede bloquear todas las señales y desbloquearlas solo durante pselect()/epoll_pwait() llamar. De esta manera, el resto de su código nunca tendrá que lidiar con EINTR.


Ver sigaction:http://pubs.opengroup.org/onlinepubs/009695399/functions/sigaction.html

SA_RESTART
  This flag affects the behavior of interruptible functions; that is, those 
  specified to fail with errno set to EINTR. If set, and a function specified 
  as interruptible is interrupted by this signal, the function shall restart 
  and shall not fail with EINTR unless otherwise specified. If the flag is not 
  set, interruptible functions interrupted by this signal shall fail with errno 
  set to EINTR.

De forma predeterminada, tiene el comportamiento SA_RESTART, por lo que no tiene que preocuparse por EINTR si no juega con señales.


Linux
  1. Buscar actualizaciones de Windows en Windows Server 2016 y 2019

  2. Cómo llamar a la función C en C++, función C++ en C (Mezclar C y C++)

  3. llamar a una función cuando el programa haya terminado con ctrl c

  4. ¿Cómo implementar un tiempo de espera en la llamada a la función de lectura?

  5. ¿Cuál es el significado de caddr_t y cuándo se usa?

4 razones para elegir Linux para el arte y el diseño

Cómo buscar archivos grandes en la consola

En Bash, ¿cuándo alias, cuándo escribir y cuándo escribir una función?

¿Es posible que la finalización de Bash pase por las alternativas?

Las 5 mejores distribuciones de Linux para desarrolladores y programadores

¿Cuál es la razón por la que rmdir(1) y rm(1) coexisten?