Oppure

Loading
12/03/06 10:13
Ucciditore
C'? qualcuno che saprebbe aiutarmi in un programma sulla coda di messaggi?
aaa
12/03/06 14:29
pierotofy
Se puoi fare delle domande un po' pi? tecniche e meno generiche certamente, ma sicuramente nessuno qui ti scriver? l'intera applicazione ;)
Il mio blog: piero.dev
13/03/06 14:48
Ucciditore
#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
13/03/06 14:50
Ucciditore
Sapete dirmi che c'? di sbagliato io apro un processo e lui scrive e legge nella coda di messaggi ma un altro processo non ci legge da quella coda


#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