<div class="gmail_quote">On Thu, Sep 3, 2009 at 4:25 PM, ana-maria lepar <span dir="ltr"><<a href="mailto:amylepar@gmail.com">amylepar@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Salutare,<br><br>Mi-ar putea explica si mie cineva, va rog, exercitiul 3 (slideul 53) de la cursul 3 de Procese <a href="http://cs.pub.ro/%7Eso/index.php?section=Cursuri&file=03.%20Procese" target="_blank">http://cs.pub.ro/~so/index.php?section=Cursuri&file=03.%20Procese</a><br>
Enuntul suna asa:<br>Ce problema poate aduce urmatorul program si cum poate fi solutionati?<br>static int flag = 0;<br>static void sig_handler (int signum)<br>{<br>flag = 1;<br>}<br>int main (void)<br>{<br>if (signal (SIGUSR1, sig_handler) == SIG_ERR) {<br>
perror ("signal");<br>exit (EXIT_FAILURE);<br>}<br>/* wait for signal */<br>if (flag == 0)<br>pause ();<br>/* do work */<br>...<br>return 0;<br>}<br></blockquote></div><br>Corect e<br>while (flag == 0)<br> pause();<br>
pt ca daca pui doar if se poate sa iti vina alt semnal decat cel asteptat.<br><br>In plus, se poate intampla un race: daca semnalul vine intre if si pause, progamul o sa iti ramana blocat. Asta presupun ca se poate rezolva cu un sleep periodic + while de mai sus, dar nu am folosit ceva de genul niciodata, asa ca nu imi dau seama daca e bine sau nu.<br>
<br>Cosmin.<br>