Ich habe zwei Programme geschrieben. Das eine wartet auf Daten in einer Message Queue, die das andere Programm in diese sendet.
Auf meinen drei PCs (3x Kubuntu 7.04) funktioniert das alles super.
Auf anderen PCs (1x Debian Etch und 2x Kubuntu 7.04) jedoch steigt das Empfangsprogramm sofort mit der folgenden Meldung aus, sobald eine Nachricht in die Message Queue geschrieben wird:
main: Fehler bei msgrcv: : Invalid argument
Ich kann das nicht nachvollziehen. Problem ist, ich soll das Programm am Freitag vorführen und dann muss es auf fremden Rechnern laufen.

Die Code auf der Empfängerseite sieht so aus:
Code: Alles auswählen
struct MainQueue
{
long int lMsgType; /*!< Typ der Nachricht */
int iStatus;
char cFileIN[1024];
int iCodec;
int iPackageSize;
int iPort;
char cIP[255];
int iInterval;
int iThreads;
long lOffset;
} stMainQueue;
...
msqid = msgget(12340815, IPC_CREAT | 0666);
if ( msgrcv(msqid, (struct msgbuf *)&stMainQueue, sizeof(stMainQueue)-sizeof(long int), 10, 0) == -1)
{
perror("main: Fehler bei msgrcv"); /* Fehler */
msgctl(msqid, IPC_RMID, NULL);
exit(EXIT_FAILURE);
}
...
Code: Alles auswählen
...
msgID = msgget(12340815, IPC_CREAT | 0666);
msgsnd(msgID, &dataMsg, sizeof(dataMsg)-sizeof(long int), 0);
...
Wieso funltioniert der Code auf meinen privaten Rechnern, auf anderen aber nicht?
Vor allem kann ich mit "Invalid argument" nicht viel anfangen.

Gruß
Thorsten