Ricky
04-11-2004, 23:01
salve ragazzi....sono proprio alle prime armi...vorrei sapere perchè non mi funziona questo semplice programmino che manda un messaggio tramite ipc ad una coda da me creata...
in particolare MSG_W non viene riconosciuto...
#include <stdio.h>
#include <sys/types.h>
#include <sys/msg.h>
#include <string.h>
int main(int argc, char **argv)
{
int mquid,key;
size_t len;
long type;
struct msgbuf *ptr;
if (argc!=4)
{ printf("inserire pathname,tipo messaggio, messaggio\n");
exit(1);
}
len=length(argv[3]);
type=atoi(argv[2]);
if ((ptr = (struct msgbuf *) calloc(sizeof(long)+len,sizeof(char)))==NULL)
{ printf("errore nell'allocazione di memoria di ptr\n"); exit(-1);}
ptr->mtype=type;
strcpy(argv[3],ptr->mtext);
if ((key=ftok(argv[1],1))==-1)
{printf("errore nella ftok ora esco!\n"); exit(-1); }
if ((mquid=msgget(key,666))==-1)
{printf("errore nella msgget ora esco!\n"); exit(-1); }
if (msgsnd(mquid,ptr,len,0)==-1)
{ printf("errore nel messaggio \n"); exit(-1);}
exit(0);
}
mi da anche errori sul puntatore....
c è qualcuno che può aiutarmi?
in particolare MSG_W non viene riconosciuto...
#include <stdio.h>
#include <sys/types.h>
#include <sys/msg.h>
#include <string.h>
int main(int argc, char **argv)
{
int mquid,key;
size_t len;
long type;
struct msgbuf *ptr;
if (argc!=4)
{ printf("inserire pathname,tipo messaggio, messaggio\n");
exit(1);
}
len=length(argv[3]);
type=atoi(argv[2]);
if ((ptr = (struct msgbuf *) calloc(sizeof(long)+len,sizeof(char)))==NULL)
{ printf("errore nell'allocazione di memoria di ptr\n"); exit(-1);}
ptr->mtype=type;
strcpy(argv[3],ptr->mtext);
if ((key=ftok(argv[1],1))==-1)
{printf("errore nella ftok ora esco!\n"); exit(-1); }
if ((mquid=msgget(key,666))==-1)
{printf("errore nella msgget ora esco!\n"); exit(-1); }
if (msgsnd(mquid,ptr,len,0)==-1)
{ printf("errore nel messaggio \n"); exit(-1);}
exit(0);
}
mi da anche errori sul puntatore....
c è qualcuno che può aiutarmi?