Ressource partagée entre 2 processus indépendants

Kodamas

Nouveau membre
Bonjour,

Je voudrais gérer une ressource partagée (en l'occurrence un tube de communication non nommé) entre 2 processus fils. J'ai pensé à utiliser une sémaphore mais je viens de lire que Linux ne gère que les sémaphores entre threads.
Il reste une méthode qui consiste à utiliser les primitives SLEEP et WAKE UP pour l acces à la section critique mais j'aimerais savoir si il n existe pas une autre méthode qui permettrait de ne pas bloquer un processus si il ne peut pas y accéder.

En fait, si le processus est refusé pour l acces au tubes de communication, il faudrait qu il puisse continuer a executer d autres fonctions.

Merci d avance!
 

zeb

Modérateur
Linux ne gère que les sémaphores entre threads.
Euh, le type qui parle de threads sous nunux évoque sans doute deux processus fils !

Tu es pile dans le cas d'école d'utilisation des sémaphores ...

Enjoy!
 

Kodamas

Nouveau membre
Nan il me semble pas.. Regarde ceci

int sem_init(sem_t *sem, int pshared, unsigned int valeur);

Si pshared=0, le sémaphore est local au processus => utilisable par les threads.
Si pshared !=0 => utilisable entre pere et fils(ou fils-fils), et Linux renvoie une erreur si !=0...

Par contre, j ai lu que ca marchait avec une autre fonction sous Unix System V, mais pas de bol, je dois le faire sous Linux.
 

zeb

Modérateur
:) Ben j'ai une bonne nouvelle, ton nunux il est Unix System V Release 4 compatible. (Sinon, recompile ton noyau). Recherche donc du côté des IPC.
 

Kodamas

Nouveau membre
Wi c est une bonne nouvelle, j ai envoyé un mail a mon prof (car c est un projet) pour savoir si les machines de l evaluation seront compatibles.

Par contre, j utilise Cygwin pour coder, est ce que c est aussi compatible System V ?

Sinon pour les IPC c est bien Com interprocessus? si c est le cas, j ai potasser le chapitre mais ds mon cours, c est différencier de Synchronisation Inter Processus.

Donc la communication est OK, il reste plus qu a synchroniser à l'aide des sémaphores :)
 

zeb

Modérateur
Ah, ah, je savais bien que c'était un cas d'école !!

Concernant les comptabilités de Cygwin, Google est ton ami, le manuel, l'aide en ligne et les FAQ aussi !

Il y a 99.99% de chance que les systèmes de ton école/université/collège/lycée/? soient compatibles. Sinon, on ne te proposerait pas l'exercice.

Quand j'évoque IPC c'est bien de Inter-Processus Communication dont je parle.

Tu t'es laissé emballer dans tes recherches. Tu es tombé sur les sémaphores et les threads POSIX, bien normés, bien documentés sur des sites très officiels. Mais il existe sous Linux, héritée du sVr4 une autre mécanique, classique et standard, qui s'appelle aussi sémaphore et qui s'applique particulièrement bien aux tubes non nommés.

CygWIN est très pratique mais cela reste un paliatif aux graves lacunes de Windows. Si je peux me permettre un conseil, installe toi un Linux, c'est bien, ou encore utilise une liveCD, c'est pas plus mal. cf. la cat Linux sur PPC pour plus d'aide.

Enjoy!
 

Kodamas

Nouveau membre
Salut

J ai installé Ubuntu (enfin!) sur un disque dur, mais remanque de bol, il est pas compatible System V apparemment puisque

#include <synch.h>

ne fonctionne pas.
Tu avais parlé de recompiler le noyau, mais n y a t il pas juste à installer des librairies manquantes?
 

zeb

Modérateur
Si c'est spécifique au système, c'est pas dans le répertoire include mais dans include/sys. Donc :[CPP]#include <sys/synch.h>[/CPP]

Mais quelle fonction cherches-tu dans <sys/synch.h> ? Tu es encore dans les threads POSIX ?

Regarde plutôt du côté de <sys/types.h>, <sys/ipc.h> et <sys/sem.h>.

(de mémoire, je ne peux pas vérifier à l'heure où je poste)
 

Kodamas

Nouveau membre
Nan j étais parti dans d autres sémaphores que mon cours donnait mais apparemment elles sont tres peu usitées d ou le fait qu elles n ont pas été tranmises a Linux.

J ai regardé tes .h c pile poile ce qu il me faut, je vais aller tester tout ca.
Merci bcp pour ton aide et tes connaissances précieuses ;)
 

zeb

Modérateur
Mais je t'en prie. Mes connaissances précieuses sont en fait des réminiscences de cours d'UNIX. D'où mon premier post :
Tu es pile dans le cas d'école d'utilisation des sémaphores ...
Donne des nouvelles de la note que tu décrocheras sur ce devoir... :D
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 134
Messages
6 718 077
Membres
1 586 394
Dernier membre
Manoushk
Partager cette page
Haut