[so] o problema ciudata

Octavian Purdila so@atlantis.cs.pub.ro
Tue, 11 Nov 2003 15:00:38 +0200


On Tue, 11 Nov 2003 02:10:55 -0800 (PST), Cosmin Arad 
<cosminarad@yahoo.com> wrote:

>
> Operatiile blocante pot fi intrerupte de semnale.
> Probabil ca procesul tau din background incearca sa
> faca o scriere sau o citire de la stdout/stdin si
> primeste un semnal SIGTTOU/SIGTTIN pt ca nu are
> consola (fiind in background) iar parintele sau
> primeste un semnal SIGCHLD.
> Daca nu asta e cazul, in orice caz procesul tau care
> asteapta la semafor este deblocat de catre un semnal.
>
> De aceea este recomandat ca operatiile blocante sa se
> efectueze intr-o bucla de genul:
>
> do {
>         result = operatie_blocanta();
> } while (result != OK);
> /* conditia result != OK variaza de la caz la caz */
>

Exista un macro care face acest lucru pentru voi: TEMP_FAILURE_RETRY.

tavi