06/03/06 18:48
Ucciditore
Ragazzi sono uno studente che da poco si ? inscritto a questo forum. Ho dei problemi con un esercizio di C sotto Linux che riguarda la coda di messaggi. Sapreste dirmi dove sbaglio?
#include<stdio.h>
#include<string.h>
#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/msg.h>
struct{
long numero;
char messaggio[100];
char presente;
int who;
}mess;
key_t msgkey;
int msgid;
int k;
char menu;
int main(narg,argv,argc)
int narg;
char *argv[];
char *argc[];
{
msgkey=ftok("miofile.txt",'b');
msgid=msgget(msgkey,IPC_CREAT);
mess.presente=1;
if(msgid>=0){
do{
printf("--------CHAT--------\n"
printf("<m = Manda Messaggio>\n"
printf("<a = Aggiorna>\n"
printf("<e = Esci>\n"
printf("Scelta= "
menu=getchar();
switch(menu){
case 'm':
printf("A chi vuoi mandare il messaggio? "
scanf("%ld",&mess.numero);
printf("Scrivi il messaggio: "
scanf("%s",&mess.messaggio[0]);
printf("Chi sei: "
scanf("%d",&mess.who);
k=msgsnd(msgid,&mess,strlen(mess.messaggio),IPC_NOWAIT);
break;
case 'a':
printf("Utenti Connessi: "
if(mess.presente==1) printf("%c",mess.presente);
k=msgrcv(msgid,&mess,strlen(mess.messaggio),mess.numero,IPC_NOWAIT);
printf("%d",mess.who);
printf(": "
printf("%s\n",mess.messaggio);
break;
case 'e':
break;
}
}while(menu!='e');
mess.presente=0;
msgctl(msgid,IPC_RMID,0);
}
return 0;
}
#include<stdio.h>
#include<string.h>
#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/msg.h>
struct{
long numero;
char messaggio[100];
char presente;
int who;
}mess;
key_t msgkey;
int msgid;
int k;
char menu;
int main(narg,argv,argc)
int narg;
char *argv[];
char *argc[];
{
msgkey=ftok("miofile.txt",'b');
msgid=msgget(msgkey,IPC_CREAT);
mess.presente=1;
if(msgid>=0){
do{
printf("--------CHAT--------\n"
printf("<m = Manda Messaggio>\n"
printf("<a = Aggiorna>\n"
printf("<e = Esci>\n"
printf("Scelta= "
menu=getchar();
switch(menu){
case 'm':
printf("A chi vuoi mandare il messaggio? "
scanf("%ld",&mess.numero);
printf("Scrivi il messaggio: "
scanf("%s",&mess.messaggio[0]);
printf("Chi sei: "
scanf("%d",&mess.who);
k=msgsnd(msgid,&mess,strlen(mess.messaggio),IPC_NOWAIT);
break;
case 'a':
printf("Utenti Connessi: "
if(mess.presente==1) printf("%c",mess.presente);
k=msgrcv(msgid,&mess,strlen(mess.messaggio),mess.numero,IPC_NOWAIT);
printf("%d",mess.who);
printf(": "
printf("%s\n",mess.messaggio);
break;
case 'e':
break;
}
}while(menu!='e');
mess.presente=0;
msgctl(msgid,IPC_RMID,0);
}
return 0;
}
aaa
06/03/06 18:48
Ucciditore
Ragazzi sono uno studente che da poco si ? inscritto a questo forum. Ho dei problemi con un esercizio di C sotto Linux che riguarda la coda di messaggi. Sapreste dirmi dove sbaglio?
#include<stdio.h>
#include<string.h>
#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/msg.h>
struct{
long numero;
char messaggio[100];
char presente;
int who;
}mess;
key_t msgkey;
int msgid;
int k;
char menu;
int main(narg,argv,argc)
int narg;
char *argv[];
char *argc[];
{
msgkey=ftok("miofile.txt",'b');
msgid=msgget(msgkey,IPC_CREAT);
mess.presente=1;
if(msgid>=0){
do{
printf("--------CHAT--------\n"
printf("<m = Manda Messaggio>\n"
printf("<a = Aggiorna>\n"
printf("<e = Esci>\n"
printf("Scelta= "
menu=getchar();
switch(menu){
case 'm':
printf("A chi vuoi mandare il messaggio? "
scanf("%ld",&mess.numero);
printf("Scrivi il messaggio: "
scanf("%s",&mess.messaggio[0]);
printf("Chi sei: "
scanf("%d",&mess.who);
k=msgsnd(msgid,&mess,strlen(mess.messaggio),IPC_NOWAIT);
break;
case 'a':
printf("Utenti Connessi: "
if(mess.presente==1) printf("%c",mess.presente);
k=msgrcv(msgid,&mess,strlen(mess.messaggio),mess.numero,IPC_NOWAIT);
printf("%d",mess.who);
printf(": "
printf("%s\n",mess.messaggio);
break;
case 'e':
break;
}
}while(menu!='e');
mess.presente=0;
msgctl(msgid,IPC_RMID,0);
}
return 0;
}
#include<stdio.h>
#include<string.h>
#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/msg.h>
struct{
long numero;
char messaggio[100];
char presente;
int who;
}mess;
key_t msgkey;
int msgid;
int k;
char menu;
int main(narg,argv,argc)
int narg;
char *argv[];
char *argc[];
{
msgkey=ftok("miofile.txt",'b');
msgid=msgget(msgkey,IPC_CREAT);
mess.presente=1;
if(msgid>=0){
do{
printf("--------CHAT--------\n"
printf("<m = Manda Messaggio>\n"
printf("<a = Aggiorna>\n"
printf("<e = Esci>\n"
printf("Scelta= "
menu=getchar();
switch(menu){
case 'm':
printf("A chi vuoi mandare il messaggio? "
scanf("%ld",&mess.numero);
printf("Scrivi il messaggio: "
scanf("%s",&mess.messaggio[0]);
printf("Chi sei: "
scanf("%d",&mess.who);
k=msgsnd(msgid,&mess,strlen(mess.messaggio),IPC_NOWAIT);
break;
case 'a':
printf("Utenti Connessi: "
if(mess.presente==1) printf("%c",mess.presente);
k=msgrcv(msgid,&mess,strlen(mess.messaggio),mess.numero,IPC_NOWAIT);
printf("%d",mess.who);
printf(": "
printf("%s\n",mess.messaggio);
break;
case 'e':
break;
}
}while(menu!='e');
mess.presente=0;
msgctl(msgid,IPC_RMID,0);
}
return 0;
}
aaa