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 :

Faire rebooter un PC par le code (linux et gcc)


Sujet :

Linux

  1. #1
    Membre averti Avatar de Flo.
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Points : 404
    Points
    404
    Par défaut Faire rebooter un PC par le code (linux et gcc)
    Bonjour,

    je travaille sur un programme écrit en c++ standart qui tourne sur un linux console. Je compile avec gcc.

    Je voudrais que mon programme puisse faire rebooter le PC.

    Est-ce possible ? Dans le cas positif, comment s'y prendre en c++ ?

    Merci.

    Flo.

  2. #2
    Membre averti Avatar de Flo.
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Points : 404
    Points
    404
    Par défaut
    Re-bonjour

    J'ai vu qu'il y avait ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	  int nRes = system("/sbin/shutdown -r now");
    ou celui-là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
              int nRes = system("/sbin/reboot");
    Mais hélas, je n'ai ni le "shutdown" ni le "reboot" dans mon "sbin".

    Ca aurait été trop facile

    A+

    Flo.

  3. #3
    Membre actif
    Avatar de mathk
    Inscrit en
    Décembre 2003
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 211
    Points : 233
    Points
    233
    Par défaut
    alors dit nous sur quelle linux tu travail car shutdown c'est pour windows et reboot c'est pour toute les distrib dériver de red-hat
    Si grande est la faiblesse d'une âme, dont la raison est partie!
    Ne jamais embrouiller ni abasourdir par une foule d'images le génie intérieur qui réside au fonde de sa poitrine,...
    L'ambition est le rfuge de l'échec. "Oscar Wild"

  4. #4
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juin 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2004
    Messages : 68
    Points : 86
    Points
    86
    Par défaut
    et tout simplement faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int nRes = system("shutdown -r now");
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int nRes = system("reboot");
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int nRes = system("halt -p");

  5. #5
    Membre averti Avatar de Flo.
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Points : 404
    Points
    404
    Par défaut
    Re-Bonjour :

    le code suivant ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int nRes = system("halt -p");
    Par ailleurs, (je ne suis pas un utilisateur de linux averti), comment je peux récupérer les informations sur mon linux ?

    Flo.

  6. #6
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juin 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2004
    Messages : 68
    Points : 86
    Points
    86
    Par défaut
    Citation Envoyé par Flo.
    Re-Bonjour :

    le code suivant ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int nRes = system("halt -p");
    Par ailleurs, (je ne suis pas un utilisateur de linux averti), comment je peux récupérer les informations sur mon linux ?

    Flo.
    du moment qu'il yen a un des 3 qui te va c'est le plus important.

    Quelles informations désire tu récupérer? Tu veux les récupérer pour les utiliser dans un programme ou c'est juste pour avoir des infos sur la machine ou tu te trouve et ainsi dire quelle version du noyau linux tu as si on te le demande?

  7. #7
    Membre averti Avatar de Flo.
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Points : 404
    Points
    404
    Par défaut
    Non non, je me suis mal fait comprendre.

    Les 3 codes suivants ne fonctionnent pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int nRes = system("shutdown -r now");
    int nRes = system("reboot");
    int nRes = system("halt -p");
    Quand aux informations de linux que je désire obtenir c'est par rapport à la question de mathk. Pour le renseigner et pour qu'il puisse éventuellement m'aider.

    Désolé.

    Flo.

  8. #8
    Membre averti Avatar de Higestromm
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    516
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 516
    Points : 412
    Points
    412
    Par défaut
    Tous ces codes ne fonctionnent que si les utilisateurs ont le droit de rebooter la machine... sinon il faut avoir les privilèges de root.
    J'aime pas les épinards... Mais alors pas du tout

  9. #9
    Membre averti Avatar de Higestromm
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    516
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 516
    Points : 412
    Points
    412
    Par défaut
    Et dailleur je me demande bien ce que tu fais avec ton programme pour avoir à rebooter ton linux tout de meme.
    J'aime pas les épinards... Mais alors pas du tout

  10. #10
    Membre averti Avatar de Flo.
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Points : 404
    Points
    404
    Par défaut
    Mon linux est utilisé comme os pour une appli temps réelle. Ce linux-là est recompilé "maison". Il n'y a pas de notion d'utilisateur je pense (mais là encore je suis pas un expert).

    Les commandes shutdown, reboot (qui dérivent de halt apparemment) et halt ne sont pas présentes sur la version linux avec laquelle je travaille.

    Quant au reboot ... c'est lorsqu'on tombe sur une défaillance du matériel électronique avec lequel on est relié, on doit rebooter le pc pour que le matériel se ré-initialize correctement.

    Il n'y a pas d'autre moyen : il faut couper le jus pour décharger des cartes PCI et réallumer le pc. Le programme, lui, démarre automatiquement , une fois l'OS lancé.

    Voila.

    Flo.

  11. #11
    Membre averti Avatar de Higestromm
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    516
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 516
    Points : 412
    Points
    412
    Par défaut
    Je vois...
    Bon en ce qui concerne les gestion de utilisateur je peux t'affirmer qu'elle est la... bien planquer peut etre mais la quand meme.

    Comment faites vous pour redémarrer votre machine habituellement ? il y à un menu ou un truc du genre ?
    Topn histoire me fais penser au machines qui contôle les IRM ou bien les scanners ou halt est compagnies ne fonctionne pas directement car il y a une procédure a respecter pour arreter la machine si on veux pas fliguer le matériel qui est connecté dessus (ou du moin l'éviter). Essai de contacter le type qui a fais cette distrib pour lui demander quelle commande utiliser pour redémarrer son truc
    J'aime pas les épinards... Mais alors pas du tout

  12. #12
    Membre averti Avatar de Flo.
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Points : 404
    Points
    404
    Par défaut
    Salut,

    alors j'ai demandé ... La gestion des utilisateurs a été supprimé lors de la compilation du noyau. L'utilsateur est l'utilisateur root par défaut sans possibilité de le changer.

    En fait le noyau linux est téléchargé via un partage samba sur un pc maitre (sous window XP). Le pc ou tourne linux est dépourvu de disque dur, au démarrage il établit une connection avec le maitre et charge le noyau.

    Pour le redémarrer on fait un reset manuel bête et méchant.

    En fait il faudrait utiliser le watchdog.

    Donc je cherche maintenant de ce côté ou du côté asm aussi.

    Voila.

    Flo.

  13. #13
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juin 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2004
    Messages : 68
    Points : 86
    Points
    86
    Par défaut
    pour ce qui est des infos avec la commande uname dans un shell si elle présente tu devrais avoir de quoi commencer.


    pour mathk, reboot est présent sur ma debian fraichement installée et il ne me semble pas que cette distrib dérive d'une red-hat

    Edit: shutdown également et je suis sur que debian n'est pas un dérivé de windows!!!

  14. #14
    Membre averti Avatar de Flo.
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Points : 404
    Points
    404
    Par défaut
    Salut,

    j'ai enfin trouvé le code que je veux : ma machine reboot.

    Inclure les fiichiers suivants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #include <unistd.h> 
    #include <sys/reboot.h>
    #include <linux/reboot.h>
    Puis ce code reboot immédiatement le pc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    reboot(LINUX_REBOOT_CMD_RESTART);
    Apparemment, ce code est préfèrable aux appels par system (pour ceux qui l'utilisent) car ils posent des problèmes de sécurité (j'en sais pas plus sur ce ça sous-entend).

    Merci pour vos réponses.

    Flo.

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

Discussions similaires

  1. [XL-2010] Faire une recherche sur une page web d'élément texte sans passer par le code source
    Par Phifou dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 18/09/2014, 11h19
  2. [XL-2010] VBA - Faire créer du code par un code
    Par mécano41 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/07/2011, 17h36
  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. Comment faire générer du rtf par mon application?
    Par nickylarson dans le forum C++Builder
    Réponses: 3
    Dernier message: 13/08/2003, 09h35

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