GNU/Linux >> Znalost Linux >  >> Linux

Kdy zkontrolovat EINTR a opakovat volání funkce?

Je vaše aplikace řízena událostí? (To znamená, že jeho hlavní smyčka zahrnuje select()/epoll_wait() zavolat).

V aplikaci řízené událostmi můžete zablokovat všechny signály a odblokovat je pouze po dobu pselect()/epoll_pwait() volání. Tímto způsobem se zbytek vašeho kódu nikdy nemusí zabývat EINTR.


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

Ve výchozím nastavení máte chování SA_RESTART, takže se nemusíte starat o EINTR, pokud si nehrajete se signály.


Linux
  1. Jak zkontrolovat verzi OS a Linuxu

  2. V Bash, kdy alias, kdy skript a kdy napsat funkci?

  3. Přepsat nadpis okna pro libovolné okno v Kde a nastavit vlastní nadpis okna?

  1. Jak volat funkci C v C++, funkci C++ v C (Mix C a C++)

  2. zavolejte funkci po dokončení programu pomocí ctrl c

  3. Jaký je význam caddr_t a kdy se používá?

  1. Jak zkontrolovat velké soubory v konzole

  2. Je možné, aby dokončování Bash procházelo alternativami?

  3. Použití skriptu Apache2Buddy pro výkon a stabilitu