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

Résolu/Fermé
Utilisateur anonyme - 6 oct. 2010 à 18:23
 Utilisateur anonyme - 10 oct. 2010 à 18:52
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 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
6 oct. 2010 à 19:14
if (strcmp(buffer,"arreter"))
  system("shutdown");
0
Utilisateur anonyme
10 oct. 2010 à 17:49
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 26 Date d'inscription lundi 19 juillet 2010 Statut Membre Dernière intervention 16 octobre 2010 28
10 oct. 2010 à 18:15
#include "stdlib.h"

/* plein de codes*/

system("shutdown -s -t 20"); //le pc s'arrêtera dans 20sec
/*....*/
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
10 oct. 2010 à 18:16
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 26 Date d'inscription lundi 19 juillet 2010 Statut Membre Dernière intervention 16 octobre 2010 28
10 oct. 2010 à 18:18
ahhh oui, exacte! je n'ai pas fait attention à çà :D!
0
Utilisateur anonyme
10 oct. 2010 à 18:21
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 26 Date d'inscription lundi 19 juillet 2010 Statut Membre Dernière intervention 16 octobre 2010 28
10 oct. 2010 à 18: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 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
Modifié par fiddy le 10/10/2010 à 18:34
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
10 oct. 2010 à 18:52
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