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

Bibliothèque standard C Discussion :

Lancement programme asynchrone


Sujet :

Bibliothèque standard C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut Lancement programme asynchrone
    Bonjour,

    Comment exécuter un exe de façon asynchrone depuis le programme C sans attendre un code retour ?
    D'avance merci.

  2. #2
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Il n'y a rien en C standard, il faut que tu précises ton OS. Il y a des exemples de code dans la FAQ, ici.

  3. #3
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Système Unix.
    L'exercice est de réaliser un module résident qui lance d'autres exe.

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 487
    Par défaut
    Cherche avec How to daemonize.

    L'idée générale consiste à à forker, puis à s'émanciper de son processus père et pgid, et de se rattacher au processus init. Attention, toutefois : ça, c'est pour créer des daemons, qui sont par définition des processus autonomes et qui ne mourront pas avec le père (très utile pour rendre la main).

  5. #5
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Merci
    (dis-donc, je n'imaginais pas que ce serait si complexe pour faire quelque chose d'aussi simple )

  6. #6
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Et lorsque le processus parent s'achève, qu'advient-il du fils ?

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Enfin, un usgae long et prolongé de telles commandes sur divers systèmes unixoides dans les 20 dernières années ne m'ont pas permis d'atteindre certaines des limites que tu cites..

    D'autre part, si on revient à la quetion initiale :

    Citation Envoyé par SheikYerbouti Voir le message
    Bonjour,

    Comment exécuter un exe de façon asynchrone depuis le programme C sans attendre un code retour ?
    D'avance merci.
    Il me semble que plutôt qu'une usine à gaz c'est quand même ce qui serait recommandé...

  8. #8
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Donc, le truc est d'ajouter un et commercial après la commande dans l'instruction system() ?

  9. #9
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    le &, en shell unix, te met la commande correspondante en background..
    (équivalent à la commande "bg")

    Dans un appel à system(), cela signifie que tu n'attends pas la fin, et que donc tu as le retour de system() dès que la commande est lancée.

    Si donc tu dois lancer une appli et ne pas attendre le retour, c'est ce qu'il faut faire, surtout si ton programe d'origine continue à tourner.

    Si le shell duquel tu as lancé ton programme initial disparaît, là il te faut choisir des stratégies plus élaborées, puisque le context disparaît.


    Si l'appli d'origine se termine, je crois (mais c'est à vérifier, je ne me souviens plus) que le processus lancé par & marche toujours. Cependant je ne me souviens plus si il est considéré comme zombie.


    Sans en savoir plus sur ton appli, je suppose que c'et une appli tournant en continu, et dont tu voudrais lancer une appli détachée (du style une fenêtre qui lance un ftp ou une impression). Dans ce cas le & est tout à fait approprié.


    http://en.wikipedia.org/wiki/Compari...command_shells

  10. #10
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Merci,

    l'appli génère des etats. En fait, elle remplit une table temporaire, puis demande l'exécution de l'état (le fameux exe) dans une boucle. Il est impératif que les programmes d'édition lancés en asynchrone continuent leur exécution même si l'appli qui les a lancé se termine.

Discussions similaires

  1. lancement programme java
    Par ouinih dans le forum Général Java
    Réponses: 1
    Dernier message: 04/04/2008, 14h31
  2. Lancement programmé d'un webservice
    Par Nixar dans le forum ASP.NET
    Réponses: 15
    Dernier message: 05/12/2007, 17h43
  3. [Batch] Lancement programme extérieur
    Par madislak dans le forum Windows
    Réponses: 4
    Dernier message: 15/07/2007, 08h57
  4. lancement programme externe bizarre
    Par edenyorke dans le forum Langage
    Réponses: 4
    Dernier message: 24/05/2007, 10h23
  5. Programmation asynchrone en VBS
    Par Eric_78180 dans le forum VBScript
    Réponses: 2
    Dernier message: 10/01/2007, 10h17

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