[so] Coada non-blocanta
Stanciu Alexandru
the_marian_2006 at yahoo.com
Tue Apr 3 22:51:01 EEST 2012
________________________________
From: Stanciu Alexandru <the_marian_2006 at yahoo.com>
To: "so at cursuri.cs.pub.ro" <so at cursuri.cs.pub.ro>
Sent: Tuesday, April 3, 2012 12:30 PM
Subject: Re: [so] Coada non-blocanta
________________________________
From: Stanciu Alexandru <the_marian_2006 at yahoo.com>
To: "so at cursuri.cs.pub.ro" <so at cursuri.cs.pub.ro>
Sent: Tuesday, April 3, 2012 12:09 PM
Subject: Re: [so] Coada non-blocanta
________________________________
From: Razvan Crainea <razvan.crainea at gmail.com>
To: Stanciu Alexandru <the_marian_2006 at yahoo.com>; Sisteme de Operare <so at cursuri.cs.pub.ro>
Sent: Tuesday, April 3, 2012 11:55 AM
Subject: Re: [so] Coada non-blocanta
2012/4/3 Stanciu Alexandru <the_marian_2006 at yahoo.com>:
>
> Deci daca fac combinatiile:
> 1. attr.mq_msgsize = sizeof(message_t) + 1 cu rc = mq_receive(q, (char
> *)buf, sizeof(message_t), NULL); imi executa tot ce se afla sub
> receive(coada este neblocanta) dar cand trimit ceva pe coada de la client nu
> receptioneaza(se blocheaza)
> 2. attr.mq_msgsize = sizeof(message_t) cu rc = mq_receive(q, (char *)buf,
> sizeof(message_t) + 1, NULL); coada este blocanta; pana cand nu trimit ceva
> pe coada, nu se executa nimic dupa receive
> 3. attr.mq_msgsize = sizeof(message_t) cu rc = mq_receive(q, (char *)buf,
> sizeof(message_t), NULL); ca la 2
>
> Declar coada ca fiind neblocanta; poate sa-mi zica si mie cineva unde
> gresesc?(sterg
toate cozile
create)
>
>
>Salut, Alexandru!
>
>Clientul încearcă și el să creeze coada blocant, dacă aceasta nu
>există. Înainte de receive, apelează un mq_getattr și verifică dacă
>flag-ul O_NONBLOCK este în continuare setat.
>
>--
>Răzvan Crainea
>
>Am asa:
>
>struct mq_attr attr;
> attr.mq_flags = O_NONBLOCK;
> attr.mq_maxmsg = 10;
> attr.mq_msgsize = sizeof(message_t);
> attr.mq_curmsgs = 0;
>
> cout << "b: " << attr.mq_flags << endl;
> q = mq_open("/gateway", O_CREAT | O_RDWR, 0644, &attr);
> struct mq_attr gttr;// = (mq_attr*) calloc (1, sizeof(mq_attr));
> mq_getattr(q, >tr);
> cout << "e: " << gttr.mq_flags << endl;
>
>si in urma afisarii obtin(chiar si alocat
dinamic):
>b: 2048
>e: 0
>
>Nici macar nu deschid clientul, doar programul meu.
>
>
>Am pus si flagul O_NONBLOCK in mq_open. Credeam ca daca pun in acea structura nu o sa mai trebuiasca sa pun si acest flag. Si merge si doar cu sizeof(message_t); acum sa vad pe la teste, poate >trebuie 8192:).
>
In sfarsit am o coada neblocanta, dar problema originala de la care am plecat, nu a disparut. Gateway-ul ia un mesaj de la client si ii trimite serverului care trebuie sa faca decriptarea un mesaj in care actualizez name, dim si crypt[0]. La server ajunge mesajul, name este corect, dar dim si crypt[0] sunt 0. Am dat la receive si attr.mq_msgsize tot felul de valori. Pe partea cealalta ajunge doar name corect. Ce problema ar mai putea sa fie aici?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so/attachments/20120403/65265599/attachment.htm>
More information about the so
mailing list