Probleme mit msgsnd() und msgrcv()
-
Hallo Allerseits,
ich habe hier ein Problem mit msgsnd() und msgrcv() Funktionen. Nicht mal simpelste Testcode will bei mir funktionieren.
Mein Testcode sieht z.B. so aus.#include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <limits.h> #include <sys/ipc.h> #include <sys/types.h> #include <sys/msg.h> #include <errno.h> int msq_c_id,msq_p_id; struct msgbuf { long int mtype; char mtext[8]; }msgbuf; struct msgbuf m = {1, "message"}; int main() { int co; int msq_t_id; long dryrunTime,mlTime; float overhTime; struct timespec t1,t2,t3,t4; if ( msgsnd(msq_t_id, (void *)&m, sizeof(m.mtext), 0) == -1 ) { perror("Testmessage send failed"); } if ( msgrcv(msq_t_id, (void *)&m, sizeof(m.mtext), 0, 0) == -1 ) { perror("Testmessage rec. failed"); } }
lässt sich problemlos kompilieren(ohne CFLAGs), beim Ausführen sagt der aber,
user@odysseus:~$ ./test
Testmessage send failed: Invalid argument
Testmessage rec. failed: Invalid argumentAlso sowohl msgsnd als auch msgrcv können nicht aufgerufen werden. Ich seh da aber keinen Fehler im Code. Was mache ich da falsch? Tipps?
Vielen Danke im Voraus
Cheers
Fritz
-
hatte vor kurzem das selbe Problem
msgsnd/msgrcv gingen unter Linux nicht, unter Solaris einwandtutti
-
imhotep schrieb:
hatte vor kurzem das selbe Problem
msgsnd/msgrcv gingen unter Linux nicht, unter Solaris einwandtuttimmmh, hab's gerade unter Sol.9 ausprobiert, sowohl mit Forte als auch mit GCC kompiliert, ging auch nicht. gleiche Fehler....
achja, die Funktionen liefern als Errno "EINVAL" zurück, laut Manpage bedeutet das
"EINVAL The value of msqid is not a valid message queue identifier, or the value of mtype is less than 1; or the value of msgsz is less than 0 or greater than the system-imposed limit."
keiner der Fehler trifft aus meiner Sicht eigentlich zu.Bin gerade richtig verwirrt, weitere Ideen?
Vielen Dank
Cheers
Fritz
-
Hi,
bei dir fehlt vermutlich der msgget() Aufruf. Ich habs vorgestern noch nach folgender Anleitung gemacht:
http://mirror.oir.ucf.edu/LDP/linuxfocus/Deutsch/Archives/lf-2003_03-0287.pdf
Gruß,
Rolf