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.
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
-
Modérateur
if (strcmp(buffer,"arreter")) system("shutdown"); -
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. -
ModérateurPetit 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... -
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. -
ContributeurEffectivement, 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 -
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