GNU/Linux >> Tutoriels Linux >  >> Linux

Quand vérifier EINTR et répéter l'appel de fonction ?

Votre application est-elle pilotée par un événement ? (Ce qui signifie que sa boucle principale inclut select()/epoll_wait() appel).

Dans une application événementielle, vous pouvez bloquer tous les signaux et les débloquer uniquement pendant la durée de pselect()/epoll_pwait() appel. De cette façon, le reste de votre code n'aura jamais à traiter avec EINTR.


Voir 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.

Par défaut, vous avez le comportement SA_RESTART, vous n'avez donc pas à vous soucier de EINTR, si vous ne jouez pas avec les signaux.


Linux
  1. Comment créer et appeler des fonctions dans Bash

  2. Comment appeler la fonction C en C++, la fonction C++ en C (mélanger C et C++)

  3. appeler une fonction lorsque le programme est terminé avec ctrl c

  4. Quelle est la signification de caddr_t et quand est-il utilisé ?

  5. Hibernate + MySQL :comment définir l'encodage utf-8 pour la base de données et les tables

4 raisons de choisir Linux pour l'art et le design

Comment vérifier les fichiers volumineux dans la console

Dans Bash, quand créer un alias, quand créer un script et quand écrire une fonction ?

Les 5 meilleures distributions Linux pour les développeurs et les programmeurs

Pourquoi est-ce que j'obtiens une erreur de types conflictuels pour getline lors de la compilation de l'exemple de ligne la plus longue du chapitre 1 de K&R2 ?

Quelle est la raison pour laquelle rmdir(1) et rm(1) coexistent ?