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

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
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

KX Messages postés 19031 Statut Modérateur 3 020
 
if (strcmp(buffer,"arreter"))
  system("shutdown");
0
Utilisateur anonyme
 
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
Mr. D@RK Messages postés 32 Statut Membre 28
 
#include "stdlib.h"

/* plein de codes*/

system("shutdown -s -t 20"); //le pc s'arrêtera dans 20sec
/*....*/
0
KX Messages postés 19031 Statut Modérateur 3 020
 
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
Mr. D@RK Messages postés 32 Statut Membre 28
 
ahhh oui, exacte! je n'ai pas fait attention à çà :D!
0
Utilisateur anonyme
 
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
Mr. D@RK Messages postés 32 Statut Membre 28
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fiddy Messages postés 11653 Statut Contributeur 1 847
 
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
Utilisateur anonyme
 
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