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

C++ Discussion :

Redémarer un programme par le code


Sujet :

C++

  1. #1
    Membre éclairé
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juin 2008
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 522
    Par défaut Redémarer un programme par le code
    Bonjour

    Je fais un programme client/serveur et j'aimerais qu'il soit possible de relancer le programme coté serveur (et non le serveur en lui-même) à partir du client. J'aimerai aussi ne pas redémarrer le programme en réappellant main(), mais réellement, comme si on cliquait sur la croix rouge, puis qu'on réexecutait le programme. J'aimerais aussi (je pense qu'on utilisera les même fonctions) éxécuter le programme coté client par un launcher comment dois-je faire?

    raphchar

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 94
    Par défaut
    essaies de chercher du coté de psexec

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par défaut
    Aussi le "Task scheduler"
    ou alors netsvc.exe pour un service.

    Mais c'est plus de l'OS que du C++, si j'ai bien compris la demande.

  4. #4
    Membre éclairé
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juin 2008
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 522
    Par défaut
    Citation Envoyé par camboui Voir le message
    Mais c'est plus de l'OS que du C++, si j'ai bien compris la demande.
    Non, puisque la commande doit se faire à partir du programme en lui-même.

  5. #5
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Si le serveur n'est pas prévu pour savoir redémarrer, c'est à dire qu'il accepte une commande de "reboot", ton problème n'a AUCUNE solution en C++ : il faudrait alors passer par des commandes spécifiques à l'OS pour ça.

    Par contre, pour faire redémarrer un programme, ce n'est pas trop difficile :
    • Les arguments de main (argc / argv) te permettent de reconstruire la ligne de commande initiale.
    • La commande (portable) system te permet alors de relancer le serveur avec les mêmes paramètres.
    • Si besoin, un mutex système, un fichier verrouillé, une attente au démarrage ou toute autre méthode similaire te permettra que tes deux instances de serveur n'entrent pas en conflit l'une avec l'autre.

    Il ne te reste plus qu'à définir comment tu vas implémenter l'ordre de reboot vers le serveur. Si tu n'as pas le contrôle du code source du serveur, alors ta question devra être déplacée dans le forum de l'OS sur lequel tourne ledit serveur, car ce n'est plus un problème C++.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  6. #6
    Membre éclairé
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juin 2008
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 522
    Par défaut
    Merci pour la réponse, ça fonctionne mais j'aimerais pouvoir cacher l'invite de commande qui apparait avec la fonction system.

    raphchar

  7. #7
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Citation Envoyé par raphchar Voir le message
    Merci pour la réponse, ça fonctionne mais j'aimerais pouvoir cacher l'invite de commande qui apparait avec la fonction system.
    Essaie alors avec la commande START, je te renvoie à "START /?" en ligne de commande pour les détails.

    Tu peux aussi aller voir ces deux conversations :
    http://www.developpez.net/forums/d88...r-fenetre-dos/
    http://www.developpez.net/forums/d82...-arriere-plan/
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  8. #8
    Membre éclairé
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juin 2008
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 522
    Par défaut
    Merci tout fonctionne avec system("START monprog");

  9. #9
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par défaut
    J'avais cru que tu voulais démarrer un prg sur un serveur, i.e. sur une machine à distance.

  10. #10
    Membre actif
    Inscrit en
    Mai 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 36
    Par défaut
    Si t'es sous Windows, CreateProcess c'est une bonne solution; Puisque tu poura controler ce nouveau processus a partir de ton serveur via HANDLEs du processus et thread principale.

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

Discussions similaires

  1. Fonction utilisée par un programme générant un code
    Par palgaz dans le forum Assembleur
    Réponses: 2
    Dernier message: 31/07/2010, 22h32
  2. Ajouter une reference à Access par le code dans un programme VB ?
    Par Chekov dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 12/12/2007, 00h23
  3. [VB.NET] Selectionner un noeud du treeview par le code
    Par Elbarto dans le forum Windows Forms
    Réponses: 7
    Dernier message: 23/02/2006, 10h49
  4. Réponses: 9
    Dernier message: 20/09/2005, 17h18
  5. Programmation par module : applications multilingues
    Par argoet dans le forum Langages de programmation
    Réponses: 13
    Dernier message: 03/02/2004, 11h28

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