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

Langage Perl Discussion :

[langage] mkfifo en PERL ?


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 88
    Points : 59
    Points
    59
    Par défaut [langage] mkfifo en PERL ?
    Salut,

    J'ai matté dans la doc, mais je n'ai pas trouvé d'équivalent du mkfifo C en PERL...

    Il existe ?

    Sinon, faut que fasse comment ? system("mkfifo fichier") ?
    Ca me parait lourd, non ?

    Merci de vos reponses !

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 582
    Points : 2 030
    Points
    2 030
    Par défaut
    Désolé d'être con mais que fait la fonction mkfifo en C ?

    Tu sais, tous les programmeurs Perl ne viennent pas du C ...

  3. #3
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 88
    Points : 59
    Points
    59
    Par défaut
    Ca créé un tube nommé (en fait un fichier) : tu écris des données dedans, et de l'autre coté tu les lis... Ca permet de faire de la communication inter-processus.

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 582
    Points : 2 030
    Points
    2 030
    Par défaut
    Citation Envoyé par Gogoye
    Ca créé un tube nommé (en fait un fichier) : tu écris des données dedans, et de l'autre coté tu les lis... Ca permet de faire de la communication inter-processus.
    Ok !

    Alors pour la gestion des pipe, va faire un tour dans la doc de Perl, + précisément perlfunc et regarde un peu tout ce que fait la fonction open().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    open FILEHANDLE,MODE,LIST
    open FILEHANDLE,EXPR
    open FILEHANDLE
     
    Opens the file whose filename is given by EXPR, and associates it with FILEHANDLE. If FILEHANDLE is an expression, its value is used as the name of the real filehandle wanted. (This is considered a symbolic reference, so use strict 'refs' should not be in effect.)
     
    If MODE is '<' or nothing, the file is opened for input. If MODE is '>', the file is truncated and opened for output, being created if necessary. If MODE is '>>', the file is opened for appending, again being created if necessary. You can put a '+' in front of the '>' or '<' to indicate that you want both read and write access to the file; thus '+<' is almost always preferred for read/write updates--the '+>' mode would clobber the file first. You can't usually use either read-write mode for updating textfiles, since they have variable length records. See the -i switch in the perlrun manpage for a better approach. The file is created with permissions of 0666 modified by the process' umask value.

  5. #5
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 88
    Points : 59
    Points
    59
    Par défaut
    Bein, open ouvre/crée un fichier normal, pas un tube nommé.

  6. #6
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 582
    Points : 2 030
    Points
    2 030
    Par défaut
    Citation Envoyé par Gogoye
    Bein, open ouvre/crée un fichier normal, pas un tube nommé.
    Tu peux trouver une bonne doc en PDF et en français ici

    Page 95 de la doc, je lis ceci :

    Si le nom de fichier commence par ’|’, le nom de fichier est interprété comme une commande vers laquelle seront dirigées
    les sorties (via un tube – en anglais pipe) et si le nom de fichier se termine par ’|’, le nom de fichier est interprété comme une
    commande dont la sortie sera récupérée (via un tube – en anglais pipe).

  7. #7
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Sisi, tu peux faire des pipes nommés avec perl : sur Linux, le plus simple est d'utiliser system pour faire le lien avec la commande système mknod ou mkfifo, ensuite, tu peux utiliser open pour ouvrir ce FIFO comme un fichier normal, (va voir perlipc pour un exemple), sur Windows, il y a un module qui te permet de faire des fifo, il est dans le core d'au moins ActivePerl, dans la hiérarchie Win32 je crois. Si tu veux un truc portable je ne sais pas si ça existe, vu que je ne suis pas sûr que FIFO désigne vraiment la même chose sur tous les systèmes mais tu peux toujours fouiller sur le CPAN.
    (par contre Arioch tu ne peux pas faire de pipes nommés avec open, juste un pipe entre deux processus)
    Il y a peut-être un module qui permet de faire ça de façon plus confortable sur Unix/Linux dans le core, mais je ne suis pas sûr.

  8. #8
    Membre habitué
    Inscrit en
    Août 2003
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 156
    Points : 187
    Points
    187
    Par défaut Re: mkfifo en PERL ?
    Citation Envoyé par Gogoye
    system("mkfifo fichier") ?


    c'est le plus simple

  9. #9
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 88
    Points : 59
    Points
    59
    Par défaut
    Ok, merci pour vos réponses .

  10. #10
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Je n'y avais pas pensé plus tôt, mais si c'est juste la fonction du C que tu cherche, elle est dans le module POSIX (du core), après, c'est à toi de voir si ça en vaut le coup ou si un simple system( "mkfifo..") ne ferait pas aussi bien...

  11. #11
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 88
    Points : 59
    Points
    59
    Par défaut
    elle est dans le module POSIX (du core)
    C'est à dire ? Tu veux dire que c'est une fonction standard du C, ou que c'est intégré à Perl, mais qu'il faut faire un truc spécial pour l'utiliser ?
    Pour ce qui est du premier cas, je le sais deka, mais peut-on utiliser des fonction prevenant du C directement en Perl ?[/quote]

  12. #12
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Non non, le module POSIX te met cette fonction (ainsi que plein d'autres) à ta disposition, il s'agit d'un module qui forme une interface entre le Perl et des fonctions standard Posix de bas niveau (du C, mais théoriquement, ces fonctions sont standard et ne se limitent pas au C, elles sont implémentés dans d'autres langages aussi), pour utiliser mkfifo dans ton programme, tu peux faire ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    use POSIX qw(mkfifo);
     
    mkfifo( "/FIFO_PREMIER" ); #je ne connais pas la syntaxe de mkfifo...
    Si tu ne connais pas les modules, renseigne-toi au plus vite, c'est une connaissance vraiment indispensable pour apprécier le Perl.

  13. #13
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 88
    Points : 59
    Points
    59
    Par défaut
    Oki, merci pour les renseignements !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [langage] Expressions rationnelles (perl/C)
    Par ma2th dans le forum Langage
    Réponses: 11
    Dernier message: 02/08/2004, 18h07
  2. [langage] Pb POO perl
    Par loothoof dans le forum Langage
    Réponses: 4
    Dernier message: 26/05/2004, 12h08
  3. [langage] Script en Perl - besoin d'aide
    Par julfra dans le forum Langage
    Réponses: 8
    Dernier message: 13/05/2004, 14h47
  4. [langage] Avis sur Perl
    Par micdie dans le forum Langage
    Réponses: 3
    Dernier message: 30/10/2003, 15h21
  5. [langage] Inclure de perl en c !!!
    Par ryo00 dans le forum Langage
    Réponses: 2
    Dernier message: 30/05/2002, 10h03

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