<html><body><div style="color:#000; background-color:#fff; font-family:times new roman, new york, times, serif;font-size:12pt"><div><span><br></span></div><div><br></div>  <div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"> <div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"> <div dir="ltr"> <font face="Arial" size="2"> <hr size="1">  <b><span style="font-weight: bold;">From:</span></b> Daniel Baluta &lt;daniel.baluta@gmail.com&gt;<br> <b><span style="font-weight: bold;">To:</span></b> Stanciu Alexandru &lt;the_marian_2006@yahoo.com&gt;; Sisteme de Operare &lt;so@cursuri.cs.pub.ro&gt; <br> <b><span style="font-weight: bold;">Sent:</span></b> Tuesday, April 3, 2012 6:18 AM<br> <b><span style="font-weight: bold;">Subject:</span></b> Re: [so] Coada non-blocanta<br> </font> </div> <br>
2012/4/3 Stanciu Alexandru &lt;<a ymailto="mailto:the_marian_2006@yahoo.com" href="mailto:the_marian_2006@yahoo.com">the_marian_2006@yahoo.com</a>&gt;:<br>&gt; ________________________________<br>&gt; From: Daniel Baluta &lt;<a ymailto="mailto:daniel.baluta@gmail.com" href="mailto:daniel.baluta@gmail.com">daniel.baluta@gmail.com</a>&gt;<br>&gt; To: Stanciu Alexandru &lt;<a ymailto="mailto:the_marian_2006@yahoo.com" href="mailto:the_marian_2006@yahoo.com">the_marian_2006@yahoo.com</a>&gt;; Sisteme de Operare<br>&gt; &lt;<a ymailto="mailto:so@cursuri.cs.pub.ro" href="mailto:so@cursuri.cs.pub.ro">so@cursuri.cs.pub.ro</a>&gt;<br>&gt; Sent: Tuesday, April 3, 2012 6:07 AM<br>&gt; Subject: Re: [so] Coada non-blocanta<br>&gt;<br>&gt; 2012/4/3 Stanciu Alexandru &lt;<a ymailto="mailto:the_marian_2006@yahoo.com" href="mailto:the_marian_2006@yahoo.com">the_marian_2006@yahoo.com</a>&gt;:<br>&gt;&gt; Vreau sa fac si eu o coada non-blocanta, astfel incat, cand fac un
 receive<br>&gt;&gt; sa nu se blocheze executia ci sa sara mai departe pana cand primeste ceva.<br>&gt;&gt; Am facut asa:<br>&gt;&gt;<br>&gt;&gt; message_t *buf = (message_t*) calloc (1, sizeof(message_t));<br>&gt;&gt;<br>&gt;&gt; &nbsp;&nbsp;&nbsp; mqd_t q;<br>&gt;&gt;<br>&gt;&gt; &nbsp;&nbsp;&nbsp; struct mq_attr attr;<br>&gt;&gt; &nbsp;&nbsp;&nbsp; attr.mq_flags = O_NONBLOCK;<br>&gt;&gt; &nbsp;&nbsp;&nbsp; attr.mq_maxmsg = 10;<br>&gt;&gt; &nbsp;&nbsp;&nbsp; attr.mq_msgsize = sizeof(message_t);<br>&gt;&gt; &nbsp;&nbsp;&nbsp; attr.mq_curmsgs = 0;<br>&gt;&gt;<br>&gt;&gt; &nbsp;&nbsp;&nbsp; q = mq_open("/gateway", O_CREAT | O_RDWR, 0644, &amp;attr);<br>&gt;&gt;<br>&gt;&gt; &nbsp;&nbsp;&nbsp; while(1)<br>&gt;&gt; &nbsp;&nbsp;&nbsp; {<br>&gt;&gt; &nbsp;&nbsp;&nbsp; rc = mq_receive(q, (char *)buf, sizeof(message_t), NULL);<br>&gt;<br>&gt; Ce se întâmplă dacă al treilea argument este sizeof(message_t) + 1?<br>&gt;<br>&gt;&gt;<br>&gt;&gt; In while, daca rc
 != -1 afisez datele din mesaj altfel un mesaj oarecare.<br>&gt;&gt; Problema este ca coada se blocheaza. Poate sa-mi zici si mie cineva de ce<br>&gt;&gt; coada mea este blocanta totusi? Afisam mesaj imediat dupa receive si nu<br>&gt;&gt; ajungea acolo.<br>&gt;<br>&gt; Poți folosi strace să vezi apelurile de sistem făcute.<br>&gt;<br>&gt; strace ./program<br>&gt;<br>&gt; thanks,<br>&gt; Daniel<br>&gt;<br>&gt;<br>&gt; In apelul mq_open am pus attr si NU &amp;attr si a mers.<br><br>Imposibil! :)<br><br>Am pus -1 la receive:). Daca pun la attr merge. Multumesc! Dar de ce a trebuit sa pun +1?<br><br><br><br> </div> </div>  </div></body></html>