<html><body><div style="color:#000; background-color:#fff; font-family:times new roman, new york, times, serif;font-size:12pt"><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> Razvan Crainea <razvan.crainea@gmail.com><br> <b><span style="font-weight: bold;">To:</span></b> Stanciu Alexandru <the_marian_2006@yahoo.com>; Sisteme de Operare <so@cursuri.cs.pub.ro> <br> <b><span style="font-weight: bold;">Sent:</span></b> Tuesday, April 3, 2012 11:55 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 <<a ymailto="mailto:the_marian_2006@yahoo.com" href="mailto:the_marian_2006@yahoo.com">the_marian_2006@yahoo.com</a>>:<br>><br>> Deci daca fac combinatiile:<br>> 1. attr.mq_msgsize = sizeof(message_t) + 1 cu rc = mq_receive(q, (char<br>> *)buf, sizeof(message_t), NULL); imi executa tot ce se afla sub<br>> receive(coada este neblocanta) dar cand trimit ceva pe coada de la client nu<br>> receptioneaza(se blocheaza)<br>> 2. attr.mq_msgsize = sizeof(message_t) cu rc = mq_receive(q, (char *)buf,<br>> sizeof(message_t) + 1, NULL); coada este blocanta; pana cand nu trimit ceva<br>> pe coada, nu se executa nimic dupa receive<br>> 3. attr.mq_msgsize = sizeof(message_t) cu rc = mq_receive(q, (char *)buf,<br>> sizeof(message_t), NULL); ca la 2<br>><br>> Declar coada ca fiind neblocanta; poate sa-mi zica si mie cineva unde<br>> gresesc?(sterg toate cozile
create)<br>><br><br>Salut, Alexandru!<br><br>Clientul încearcă și el să creeze coada blocant, dacă aceasta nu<br>există. Înainte de receive, apelează un mq_getattr și verifică dacă<br>flag-ul O_NONBLOCK este în continuare setat.<br><br>-- <br>Răzvan Crainea<br><br>Am asa:<br><br>struct mq_attr attr;<br> attr.mq_flags = O_NONBLOCK;<br> attr.mq_maxmsg = 10;<br> attr.mq_msgsize = sizeof(message_t);<br> attr.mq_curmsgs = 0;<br> <br> cout << "b: " << attr.mq_flags << endl;<br> q = mq_open("/gateway", O_CREAT | O_RDWR, 0644, &attr);<br> struct mq_attr gttr;// = (mq_attr*) calloc (1, sizeof(mq_attr));<br> mq_getattr(q, &gttr);<br> cout << "e: " << gttr.mq_flags << endl;<br><br>si in urma afisarii obtin(chiar si alocat
dinamic):<br>b: 2048<br>e: 0<br><br>Nici macar nu deschid clientul, doar programul meu.<br><br><br><br><br> </div> </div> </div></body></html>