If (...=...) j'y arrive pas

Résolu
Bonjour,
j'ai fait un chat en C . Voici une petite partie du code :

while (1)
{
/* Si l'on reçoit des informations : on les affiche à l'écran */
if(recv(sock, buffer, 32, 0) != SOCKET_ERROR)
printf("%s ", buffer);

}
Comment puis-je faire pour faire if l'information recue = arreter alors arreter l'ordi.

Merci de votre aide.

6 réponses

  1. Modérateur
    if (strcmp(buffer,"arreter"))
      system("shutdown");
    0
    1. Merci, mais ca ne marche pas :

      je peux mettre n'importe quelle commande dans system("") elle s'executera lorsque je tape n'importe quel mot, mais quand je tape arreter, il ne se passe rien.
      0
      1. #include "stdlib.h"

        /* plein de codes*/

        system("shutdown -s -t 20"); //le pc s'arrêtera dans 20sec
        /*....*/
        0
    2. Modérateur
      Petit bug de ma part, il fallait écrire if (strcmp(buffer,"arreter")==0)
      Du coup il faisait exactement le contraire de ce que tu voulais !

      Excuse moi pour ce petit oubli...
      0
      1. ahhh oui, exacte! je n'ai pas fait attention à çà :D!
        0
    3. merci beaucoup, ca marche. Mais temps que j'y suis, je voudrais savoir :
      comment arreter un ordi sans faire system("shutdown/s");
      enfin je veux dire sans passer par le system ?

      Merci de votre précieuse aide.
      0
      1. en débordant le tampon et puis en remplissant toute la memoire(RAM) avec des nombres premiers par exemple :p ...après quelques secondes tu n'aperçois plus la souris puis lecran devient tout blanc...et hop! le systeme redémarre :D
        0
    4. Contributeur
      Effectivement, il vaut mieux éviter la fonction system qui n'est pas performante du tout de par son fonctionnement.
      Et comme il n'existe pas de fonction standard en C pour redémarrer le système, il faudra interagir avec le noyau du système.
      Pour redémarrer le système et que vous programmez proprement (donc pas de system (sauf cas très particulier), il convient d'utiliser les API.
      Par exemple :
      ExitWindowsEx(EWX_POWEROFF,0) : https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-exitwindowsex?redirectedfrom=MSDN
      (inclure le header <windows.h>).
      Si le programme n'a pas tous les droits, il faudra faire utiliser un tokenPrivilege.
      Cdlt,

      Google is your friend
      0
      1. je n'ai pas tres bien compris les API, quand j'essaie de mettre
        ExitWindowsEx(EWX_POWEROFF,0) a la place de
        system("shutdown/s"); ca ne marche pas
        0