Bonjour.
Je souhaiterai connaitre une méthode permettant de supprimer l'exécutable d'un processus.
Toute aide est la bienvenue.
Bonjour.
Je souhaiterai connaitre une méthode permettant de supprimer l'exécutable d'un processus.
Toute aide est la bienvenue.
Hello,
Que veux-tu dire ? Tuer le processus ou supprimer le fichier exécutable ?Envoyé par 0v3rb1t
Pour supprimer un fichier, tu as la fonction remove() en C. Pour tuer un processus, c'est propre au systeme.
A+
je ne sais pas à quoi ça pourra te servir, mais c'est simple :
Si tu es sous *n*x...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 #include <stdlib.h> int main ( int argc, char **argv ) { char *chaine=NULL ; int i ; chaine = malloc ( (strlen(argv[0])+7) ); if ( chaine == NULL ) { fprintf ( stderr, "\n Erreur d'allocation\n"); return EXIT_FAILURE ; } sprintf ( chaine, "rm -f %s", argv[0] ); i = system(chaine); free(chaine); return i ; }
Si tu es sous Windows, je ne connais pas la commande équivalente à rm.. Delete ? DeleteFile ??
PAr contre, sous *n*x, tu détruiras bien le binaire, mais pas le processus...
Les systèmes unixoïdes autorisent à supprimer un exécutable/script "en cours d'exécution" ?
Ça ne marchera pas sosu Windows, en tout cas: Un programme en cours d'exécution est considéré comme un fichier "utilisé par un processus"...
Oui, tout comme on peut supprimer n'importe quel fichier. Le truc pour faire un fichier utilisable uniquement par un processus sous unix, c'est de l'ouvrir puis de le supprimer. Le fichier reste présent tant qu'il y a une référence mais on ne peut pas créer de nouvelles références.Envoyé par Médinoc
T'as raison, peut-être pas si le binaire est gros. Si il est "petit", oui car le binaire une fois lancé est chargé en mémoire par le loader.... Donc le fichier physique n'est plus relié... Mais peut-être que c'est lié au fait de ne pas faire référence à des blibliothèques. Je n'ai jamais essayé avec un tout petit prog, ou un prog sans biblios... Donc je me suis peut-être avancé un peuEnvoyé par Médinoc
![]()
![]()
Par contre, un très net avantage de la manière de gérer unixoide :
Une manière subtile de faire un upgrade sans déranger l'usager :
quand tu compiles une nouvelle version, tu fais un "move" (mv en shell) du binaire vers un autre nom, et tu compiles normalement. L'usager continue comme si de rien n'était, mais si il quitte et relance il obtient la nouvelle version![]()
Il me semble qu'on peut renommer un programme en cours d'exécution sous Windows. Mais pas le supprimer, en tout cas : On ne peut supprimer un fichier ouvert que s'il l'est avec le flag FILE_SHARE_DELETE, et un programme en éxécution ne l'est pas.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager