GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wann auf EINTR prüfen und den Funktionsaufruf wiederholen?

Ist Ihre Anwendung ereignisgesteuert? (Das heißt, seine Hauptschleife enthält select()/epoll_wait() anrufen).

In einer ereignisgesteuerten Anwendung können Sie alle Signale blockieren und nur für die Dauer von pselect()/epoll_pwait() entsperren Anruf. Auf diese Weise muss der Rest Ihres Codes nie mit EINTR umgehen.


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

Standardmäßig haben Sie das SA_RESTART-Verhalten, sodass Sie sich keine Gedanken über EINTR machen müssen, wenn Sie nicht mit Signalen spielen.


Linux
  1. So überprüfen Sie die Betriebssystem- und Linux-Version

  2. Wann soll in Bash ein Alias, wann ein Skript und wann eine Funktion geschrieben werden?

  3. Ist es möglich, dass die Bash-Vervollständigung die Alternativen durchläuft?

  4. Den Fenstertitel für ein beliebiges Fenster in Kde überschreiben und einen benutzerdefinierten Fenstertitel festlegen?

  5. Verwenden des Apache2Buddy-Skripts für Leistung und Stabilität

4 Gründe, Linux für Kunst und Design zu wählen

So suchen Sie in der Konsole nach großen Dateien

Die 5 besten Linux-Distributionen für Entwickler und Programmierer

So erstellen und rufen Sie Funktionen in Bash auf

Rufen Sie eine Funktion auf, wenn das Programm beendet ist, mit ctrl c

Welche Bedeutung hat caddr_t und wann wird es verwendet?