[so] [Tema 2][linux] mq_receive returneaza Bad file descriptor

Andrei Petre p31andrei at gmail.com
Wed Apr 10 02:15:54 EEST 2013


2013/4/10 Claudiu Olteanu <olteanu.claudiu at ymail.com>:
> Salut!
>
> Nu imi dau seama de ce atunci cand incerc sa fac preiau ceva de pe coada imi
> da Bad file descriptor. Sa pun pe ea nu intampin nicio problema. File
> descriptorul este identic cu cel intors de mq_open. Aveti idee care ar putea
> fi problema?
>
> Apelul functiei mele arata ceva de genul :
> mq_receive(mq, (char *)msg, attr.mq_msgsize + 1 , NULL);

Eu am apelat cu al 3lea parametru ca fiind (1<<13) = 8192 parca, e
default-ul de msgmax (dimensiunea unui mesaj pe care o asteapta
coada). Si scrie prin lab ca receiver-ul trebuie sa puna ca parametru
acolo _minim_ dimensiunea msgmax.

Deci incearca mq_receive(mq, (char *)msg, 8192, &prio) // eu i-as da
ceva acolo, nu stiu cum merge cu null.

citez din lab, la [1] jos:
Atenție! La primirea unui mesaj, lungimea buffer-ului trebuie să fie
cel puțin egală cu dimensiunea maximă a mesajelor pentru coada
respectivă, iar la trimitere cel mult egală. Dimensiunea maximă
implicită se poate afla pe Linux din /proc/sys/kernel/msgmax.

Spor.

[1] http://ocw.cs.pub.ro/courses/so/laboratoare/laborator-05#trimiterea_si_receptionarea_de_mesaje


--
Andrei Petre


More information about the so mailing list