Questions ur le projet NSY103

Modérateur : delacroix joelle

delacroix joelle
Messages : 10
Inscription : 14 sept. 2005 9:31

Questions ur le projet NSY103

Message par delacroix joelle » 14 déc. 2011 20:01

Postez ici vos questions sur le projet NSY103

godefroy.clair
Messages : 1
Inscription : 21 janv. 2012 22:57

Re: Questions ur le projet NSY103

Message par godefroy.clair » 21 janv. 2012 23:18

Bonsoir,

J'essaye de comprendre les "régions de mémoire partagée", pour cela je fais des tests de création. Le problème est qu'à la seconde exécution de mon programme, shmget me renvoie "file exist". Si je ne m'abuse, cela signifie qu'il me faut détruire la zone de mémoire partagée une fois créée. Mais, l'instruction sous shell ipcrm -Q + le numéro de ma clé ne change rien. Que faire ? Est-ce un problème de "détachement" ? N'est-il pas automatique à la fin de mon processus ?

Merci d'avance pour les réponses...

marek
Messages : 6
Inscription : 12 sept. 2009 17:02

Re: Questions ur le projet NSY103

Message par marek » 30 avr. 2012 11:01

Bonjour,

TP très intéressant, je sens que ça va me prendre pas mal de temps, quelques lacunes en C à combler...

Idéalement le projet doit il être fonctionnel et testé ?

Autre question je cite : "Les informations concernant les spectacles sont stockés dans une table en mémoire centrale..." Je suppose qu'il s'agit d'un fichier existant (à créer) projeté en mémoire centrale ?

Merci d'avance de vos réponse.

marek
Messages : 6
Inscription : 12 sept. 2009 17:02

Re: Questions ur le projet NSY103

Message par marek » 13 mai 2012 13:17

Bon, le forum est visiblement un peu "mort" mais je tente le coup...

@godefroy.clair --> as tu trouvé une solution à ton problème, je rencontre le même, pourtant j'ai pris les exemples de bouquin, tenté de détuire la zone, recreer avec une nouvelle clé mais rien n'y fait.

Au niveau du TP, doit-on créer un fichier et transmettre les données en mémoire centrale dans une région partagée ? Ou devons-nous rentrer les données en dur dans le code ?

merci d'avance aux âmes charitables échouées sur le forum.

marek
Messages : 6
Inscription : 12 sept. 2009 17:02

Re: Questions ur le projet NSY103

Message par marek » 20 mai 2012 10:56

Bon je bloque sur la création de mémoire partagée, même en recopiant les exemples du bouquin ça ne fonctionne pas.

Voilà le bout de code à tester :

Code : Tout sélectionner

#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <sys/sem.h>

int main ()
{
    int i,pid;
    int semid;
    struct sembuf operation;
    int shmid;
    int *mem;
	

	/*allocation région mémoire partagée*/
    if((shmid=shmget(45, 1000, 0750|IPC_CREAT|IPC_EXCL) == -1))
    {
		perror("pb création mémoire partagée");
    }
	
    printf("shmid --> %d\n",shmid);
	
	
    if((mem=shmat(shmid,NULL,0))<0)
    {
        perror("problème attachement");
    }
    printf("mem --> %d\n",mem);
	
	/*création de deux sémaphores*/
    if((semid=semget(12,2,IPC_CREAT|IPC_EXCL|0600))==-1)
    {
        perror("pb semget--1");
    }
    printf("semid --> %d\n",semid);
	
	
	/*sémaphore PLEIN initialisé à 10*/
    if((semctl(semid,0,SETVAL,10))==-1)
    {
        perror("pb semctl à 10");
    }
	
	/*sémaphore VIDE initialisé à 0*/
    if((semctl(semid,0,SETVAL,0))==-1)
    {
        perror("pb semctl à 0");
    }
	
	shmdt(mem);
	shmctl(shmid,IPC_RMID,NULL);
	semctl(semid,0,IPC_RMID,0);	
	
}

Après exécution j'obtient :

Code : Tout sélectionner

Loading program into debugger…
Program loaded.
run
[Switching to process 2877]
Running…
shmid --> 0
mem --> -1
semid --> 262144
Debugger stopped.
Program exited with status value:0.
résultat commande ipcs :

Code : Tout sélectionner

macmarek:~ marekmajewski$ ipcs

IPC status from <running system> as of Sun May 20 10:32:15 CEST 2012
T     ID     KEY        MODE       OWNER    GROUP
Message Queues:

T     ID     KEY        MODE       OWNER    GROUP
Shared Memory:

m 524296 0x0000002d --rw-r----- marekmajewski    staff

T     ID     KEY        MODE       OWNER    GROUP
Semaphores:
s 262144 0x0000000c --ra------- marekmajewski    staff

La création du segment à apparemment bien fonctionné, semaphore aussi. J'ai l'impression que le soucis vient de l'attachement de la mémoire partagée (le printf renvoi -1, mais je ne comprend pas pourquoi perror n'alerte rien...)

Merci d'avance de vos aides.

PS : la destruction de la région partagée ne semble pas marcher dans le code, il faut donc taper la commande ipcrm -M 45...

Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité