Se connecter avec
S'enregistrer | Connectez-vous

Ressource partagée entre 2 processus indépendants

Dernière réponse : dans Programmation

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!
Lassé par la pub ? Créez un compte
Expert Programmation

Citation :
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!

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.

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 :) 
Expert Programmation

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!

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?
Expert Programmation

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


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)

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 ;) 
Expert Programmation

Mais je t'en prie. Mes connaissances précieuses sont en fait des réminiscences de cours d'UNIX. D'où mon premier post :
Citation :
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 
Lassé par la pub ? Créez un compte