IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Programmation de FIFO


Sujet :

Linux

  1. #21
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2008
    Messages : 67
    Points : 42
    Points
    42
    Par défaut
    Je suis entrain d'essayer de coder cet exercice et j'avoue que je suis un peu perdu..

    Comment fait-on pour ouvrir deux tubes chacun vers une autre console?

    Et comment fait-on pour passer attribuer le nom de ces tubes en paramètre? (avec argv, je sais mais comment faire en sorte que le nom soit correctement appliqué (strcopy?) ?)

    Si quelqu'un pouvait m'éclairer... merci!

  2. #22
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 739
    Points : 31 068
    Points
    31 068
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ggwtf Voir le message
    Comment fait-on pour ouvrir deux tubes chacun vers une autre console?
    Tu n'ouvres pas des tubes vers une autre console, tu ouvres juste des tubes, rien de plus.

    Si chaque programme ouvre le même tube (le même fichier pipe) mais que l'un l'ouvre en lecture et l'autre en écriture alors le programme pourra écrire des trucs dans le tube (write) et l'autre programme pourra les lire (read). Alors avec un seul tube il y a un programme condamné à ne faire qu'écrire et l'autre ne fait que lire ce qui donne une communication que dans un seul sens mais si chaque programme ouvre 2 tubes (l'un en lecture et l'autre en écriture) ben les 2 programmes communiqueront dans les 2 sens.

    Et si chaque programme est lancé à partir d'une console et que le programme qui lit les infos du tube les réaffiche à l'écran ben tu verras les infos de la console 1 s'afficher sur la console 2 et inversement. On pourra dire que les deux consoles communiquent mais ce ne sera qu'une illusion (ce seront les deux programmes qui communiquent et pas les consoles).

    Citation Envoyé par ggwtf Voir le message
    Et comment fait-on pour passer attribuer le nom de ces tubes en paramètre? (avec argv, je sais mais comment faire en sorte que le nom soit correctement appliqué (strcopy?) ?)
    Si quelqu'un pouvait m'éclairer... merci!
    Pourquoi tu veux copier le nom placé dans argv[x] (x étant le rang du paramètre que tu définiras toi-même comme devant contenir le nom du fichier pipe) dans une autre variable ? Ca te plait pas la variable argv[x] ???

  3. #23
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2008
    Messages : 67
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Pourquoi tu veux copier le nom placé dans argv[x] (x étant le rang du paramètre que tu définiras toi-même comme devant contenir le nom du fichier pipe) dans une autre variable ? Ca te plait pas la variable argv[x] ???
    J'ai créé une fonction pour l'envoi et la réception et chaque fonction à le nom de l'instance (argv[x]) en paramètre... et lorsque je crée une variable de type "char *" en paramètre, ca me retourne une erreur...

  4. #24
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 739
    Points : 31 068
    Points
    31 068
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ggwtf Voir le message
    J'ai créé une fonction pour l'envoi et la réception et chaque fonction à le nom de l'instance (argv[x]) en paramètre... et lorsque je crée une variable de type "char *" en paramètre, ca me retourne une erreur...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    #include <stdio.h>
     
    void envoi (char *nom)
    {
          printf("Fonction envoi - Nom=%s", nom);
    }
     
    void recep(char *nom)
    {
          printf("Fonction recep - Nom=%s", nom);
    }
     
    int main(int argc, char *argv[])
    {
         if (argc > 1)
         {
              envoi(argv[1]);
              recep(argv[1]);
         }
    }
    Pas d'erreur chez-moi...

  5. #25
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    bonjour à a tous,

    j'ai également codé ce problème, est ce quelqu'un pourrait me donner son avis en pv sur ce que j'ai fais ?

    merci d'avance.

  6. #26
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2008
    Messages : 34
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Par exemple pourquoi ce close(fifo1) ??? Pourquoi dans rot13 tu fais un strchr(str[i]) alors que tu as déjà la position de cette lettre qui est "i" ?
    Si je ne close pas, le programme ne fonctionne pas. Il reste ouvert et bloque (c'est bien le principe des tube ?).

    Le strchr me permet de savoir dans ma base de lettre, quel est celle recherché. Je ne comprend pas comment faire autrement ?

    Merci pour les infos, tu m'as vraiment beaucoup aidé

Discussions similaires

  1. Programme client/serveur avec FIFO
    Par JBouchard dans le forum Débuter
    Réponses: 3
    Dernier message: 27/11/2012, 17h21
  2. Programme de boot qui passe la main à Windows
    Par Bob dans le forum Assembleur
    Réponses: 7
    Dernier message: 25/11/2002, 04h08
  3. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 15h50
  4. communication entre programmes
    Par jérôme dans le forum C
    Réponses: 12
    Dernier message: 16/04/2002, 09h05
  5. [Kylix] icone associée à un programme
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 10h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo