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 :

Prog system et UNIX .


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2004
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 616
    Par défaut Prog system et UNIX .
    Bonjour a tous, une simple question, j'ai un exo a faire sur les tube nommé UNIX , ( je suis le dernier des pinguin en ce qui concerne et j'ignore si ce genre de truc est spécifique linux ou si ca marche sous windows, dans le cas ou ca ne marche pas quel est l'equivalent ? )

    Enfin surtout , mon prof m'a dit que le C++ n'était pas adapté pour cela ... mais il est assez buté et ne m'a pas donné de raisons, les connaissez-vous ?

    Merci .

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    ben, j'ignore s'il y a des classes C++ pour gérer les tubes, pas en C++ standard en tout cas. Il faut généralement utiliser les fonctions C natives du système d'exploitation.
    Sous Unix, les tubes anonymes sont faits avec pipe(), et doivent obligatoirement être créés avant le fork() pour marcher. On y écrit avec les fonctions d'entrée-sortie bas-niveau (read()/write()/close())
    Sous Windows, on crée un tube anonyme avec CreatePipe(), et on y écrit avec les fonctions de fichiers de Windows (ReadFile()/WriteFile()/CloseHandle()).

    Quant aux tubes nommés, c'est une autre histoire:
    Sous unixoïde on les crée avec mkfifo(), et on les ouvre ensuite comme des ficihers, me semble-t-il (par contre, ils ne sont pas supprimés automatiquement quand les processus sont terminés: il faut les supprimer soi-même).
    Sous Windows, on les crée avec CreateNamedPipe().
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    jmv
    jmv est déconnecté
    Membre chevronné Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Par défaut
    salut
    pour créer une tube nommé sous windows : CreateNamedPipe()

    je pense que t'on prof t'as dit que le C++ n'était pas adapté à ça parce que les appels systèmes sous linux (comme avec win32) ne sont pas "orienté objet". Mais rien n'empèche de les utiliser en C++, ton prof éxagère un peu (ah ces profs )

    [EDIT]zut, j'avais pas tout lu le post de médinoc[/EDIT]

  4. #4
    Membre éclairé
    Inscrit en
    Octobre 2004
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 616
    Par défaut
    Merci de vos réponses, je supose donc que CreateNamedPipe() ( entre nous, le nom est quand même plus parlant que son equivalent portable ) est pour windows seulement et que la fonction mkfifo() est portable?
    Bref, encore merci
    Je n'ai plus qu'a me lancer dans le code ^^

    EDIT : Quand j'y pense c'est le 2eme prof qui me troll C++ vs C ... et pi [HS] Y'en a marre des cours de la faq tout pourri dans lesquels on apprend rien ... non mais ca fait quand meme 3 ans qu'en cours d'aalgo je fait les MEME algo chaque année de tri, de joujou sur les liste , pile, arbre, graph ect ... [/HS]

  5. #5
    jmv
    jmv est déconnecté
    Membre chevronné Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Par défaut
    mkfifo() portable ? je ne pense pas, c'est seulement pour unix et linux.

  6. #6
    Membre éclairé
    Inscrit en
    Octobre 2004
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 616
    Par défaut
    Hum, donc pas moyen de faire un truc portable ?

  7. #7
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Non, puisque c'est dépendant du système d'exploitation.

    Par contre, tu peux toujours faire tes propres fonctions, avec des #define / #ifdef pour faire une version unixoïde et une version Windows de chaque fonction...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Membre éclairé
    Inscrit en
    Octobre 2004
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 616
    Par défaut
    Hum en effet ca parrait logique O_o
    Bon je vais me débrouiller

  9. #9
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par jmv
    je pense que t'on prof t'as dit que le C++ n'était pas adapté à ça parce que les appels systèmes sous linux (comme avec win32) ne sont pas "orienté objet".
    J'ai quand même envie de préciser que ce n'est pas parce qu'on est en C qu'on ne peut pas faire de l'objet. On retrouve pas mal de concepts objets en Win32 (tout est objet), et sous UNIX aussi (tout est fichier).

  10. #10
    jmv
    jmv est déconnecté
    Membre chevronné Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Par défaut
    Citation Envoyé par Aurelien.Regat-Barrel
    Citation Envoyé par jmv
    je pense que t'on prof t'as dit que le C++ n'était pas adapté à ça parce que les appels systèmes sous linux (comme avec win32) ne sont pas "orienté objet".
    J'ai quand même envie de préciser que ce n'est pas parce qu'on est en C qu'on ne peut pas faire de l'objet. On retrouve pas mal de concepts objets en Win32 (tout est objet), et sous UNIX aussi (tout est fichier).
    C'est vrai qu'on peut faire le la programmation objet en C. Je voulais seulement dire que les api win32 et celle de linux n'offre pas de classe mais une collection de fonctions. Et j'essayais de comprendre pourquoi le prof de Clad3 a dit (sans se justifier) que le C++ n'était pas adapté.

Discussions similaires

  1. Prog Systeme recv() et signaux
    Par thotoss dans le forum Réseau
    Réponses: 2
    Dernier message: 23/04/2009, 23h51
  2. Prog Systeme recv() et signaux
    Par thotoss dans le forum Linux
    Réponses: 1
    Dernier message: 23/04/2009, 19h45
  3. Prog Systeme recv() et signaux
    Par thotoss dans le forum Développement
    Réponses: 0
    Dernier message: 23/04/2009, 17h59
  4. Programmation systeme sous Unix
    Par Premium dans le forum Linux
    Réponses: 9
    Dernier message: 11/03/2006, 09h40
  5. Prog systeme
    Par Premium dans le forum Autres éditeurs
    Réponses: 8
    Dernier message: 02/02/2006, 19h58

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