2011-06-19 3 views
-1

Ok, donc je veux écrire un programme C++ qui peut terminer un processus spécifique en cours d'exécution. J'ai cherché sur Internet et aucune des solutions que j'ai rencontrées n'a de sens pour moi. Y a-t-il un moyen simple de mettre fin à un processus?Comment mettre fin à un processus en C++?

+1

Quel système d'exploitation ciblez-vous? – bdonlan

+1

Voulez-vous une solution portable? Si non, quel système? –

+0

Est-ce un processus que vous avez créé vous-même? –

Répondre

0

En supposant que vous êtes sur une plate-forme * nix et que vous avez l'ID de processus (vous a donné naissance au processus vous utilisé une autre méthode pour en déduire son pid), en utilisant kill(2) devrait fonctionner:

#include <sys/types.h> 
#include <signal.h> 

void main() { 
    /* ... */ 
    pid_t pid = ???; 
    kill(pid, SIGTERM); 
} 

elle ne fonctionnera que sous certaines conditions, cependant:

pour un processus d'avoir la permission d'envoyer un signal, il doit être privilégié (sous Linux: avoir la capacité CAP_KILL), ou l'utilisateur réel ou effectif du processus d'envoi doit égaler le réel ou sav ed set-user-ID du processus cible. Dans le cas de SIGCONT, il suffit que les processus d'envoi et de réception appartiennent à la même session.

Questions connexes