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

POSIX C Discussion :

creer un processus


Sujet :

POSIX C

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4
    Points : 2
    Points
    2
    Par défaut creer un processus
    salut a tous
    mon probleme est simple : j'ai un programme P1 qui doit lancer un autre programme P2.
    contraintes :
    - P1 doit continuer son execution apres le lancement de P2
    - doit etre utilisable sous linux et windows (donc on oublie les api)

    alors j'ai cogitté et j'ai pensé a ca :
    je fais un fork() dans P1 pour créer le nouveau processus
    je fais mon test pour savoir si c'est P1 ou P1'
    si c'est P1', je fais un exec de P2
    probleme : P1' doit connaitre le chemin vers P2. apres le fork le contenu des variables n'est pas copie
    je ne dois pas utiliser de fichier pour faire communiquer les 2 processus

    si quelqu'un a une solution pour le sujet ou pour mon debut de solution, je suis preneur
    merci

  2. #2
    Membre éprouvé
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Points : 977
    Points
    977
    Par défaut
    Hmm.... Quelques incohérences et mauvais termes...
    - doit etre utilisable sous linux et windows (donc on oublie les api)
    et
    je fais un fork() dans P1 pour créer le nouveau processus
    le jour où tu arrives à faire un fork sur un Windows natif, tu me previens, ça m'interesse

    Qu'entends-tu par :
    P1' doit connaitre le chemin vers P2.
    ??

    Sinon, utilise les threads POSIX.. (quoique je ne sais pas si ouindoze est conforme POSIX.4... à confirmer...)
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Pouic
    le jour où tu arrives à faire un fork sur un Windows natif, tu me previens, ça m'interesse
    et bien je penser que sous windows fork pouvait fonctionné car fork est déclaré dans unistd.h et je pensais que unistd etait aussi sous windows mais je viens de verifier et j'ai l'impression que non

    Citation Envoyé par Pouic
    Qu'entends-tu par :
    P1' doit connaitre le chemin vers P2.
    ??
    j'entend chemin vers P2 :
    - /usr/bin/programme
    ou
    - c:\Program Files\Programme\programme.exe

    Citation Envoyé par Pouic
    Sinon, utilise les threads POSIX.. (quoique je ne sais pas si ouindoze est conforme POSIX.4... à confirmer...)
    il me faut bien un nouveau processus, P1 peut se terminer alors que P2 doit continuer. si j'ai bien compris ce qu'etait un thread, ce n'est pas possible

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Si, c'est tout à fait possible normalement, le processus est supposé se terminer quand son DERNIER thread se termine.

    MAIS:
    1° ce n'est peut-être pas le cas des threads POSIX...

    2° En Windows natif, il faut terminer le thread de main() par ExitThread() au lieu de return. (la petite subtilité sur laquelle on se prend facilement la tête)

    3° Un thread ne peut pas se faire remplacer par un exécutable avec exec() (mais il peut appeler system(), normalement)
    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.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci Médinoc pour ces précisions
    J'ai trouvé un compromis pour la portabilité. Pour les fonctions windows que je ne peux pas remplacer, je vais utiliser des ifdef pour que la compilation s'effectue pour l'environnement concerné.
    Je vais essayer avec la lib pthread, merci pour vos reponses

  6. #6
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: creer un processus
    Citation Envoyé par flat
    - doit etre utilisable sous linux et windows (donc on oublie les api)

    alors j'ai cogitté et j'ai pensé a ca :
    je fais un fork()
    Pas de fork() sous Windows.

    Les processus ne se gèrent pas de la même façon sous Windows et sous Linux, mais tu peux essayer de créer une couche d'abstraction commune applicative.

    (Ca existe peut être, est ton ami)

    Sinon, les pthreads (un seul processus, mais plusieurs threads) existent pour les deux plateformes (c'est du POSIX.1, donc indépendant de la plateforme).

    Ca dépend de ton application...
    Pas de Wi-Fi à la maison : CPL

  7. #7
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par flat
    Merci Médinoc pour ces précisions
    J'ai trouvé un compromis pour la portabilité. Pour les fonctions windows que je ne peux pas remplacer, je vais utiliser des ifdef pour que la compilation s'effectue pour l'environnement concerné.
    Je vais essayer avec la lib pthread, merci pour vos reponses
    Ok, mais par pitié, pas dans le code applicatif. Fait une couche d'abstraction documentée... (fait le bien, ça reservira...)
    Pas de Wi-Fi à la maison : CPL

Discussions similaires

  1. Creer plusieurs processus et plusieurs pipes .en C
    Par mansour67 dans le forum Linux
    Réponses: 1
    Dernier message: 29/03/2008, 23h36
  2. Créer un processus précis
    Par Goundy dans le forum Linux
    Réponses: 3
    Dernier message: 13/05/2006, 12h49
  3. comment creer un alias dynamique avec BDE et ODBC
    Par david33 dans le forum C++Builder
    Réponses: 2
    Dernier message: 12/07/2002, 11h50
  4. Réponses: 19
    Dernier message: 24/05/2002, 16h36
  5. [langage] comment créer des fichiers ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 05/05/2002, 16h33

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