2009-10-07 8 views
2

Existe-t-il un moyen dans Qt de terminer a'la TerminateProcess le processus en cours?Qt: Tuer le processus actuel?

QProcess::kill() semble être applicable uniquement à d'autres processus externes.

+0

Faut-il vraiment le tuer? Est-ce que QCoreApplication :: exit() n'est pas suffisant? –

+0

Ma conjecture est que les gens QT n'ont pas pensé à emballer cela. Vous devrez peut-être coder les API spécifiques à la plate-forme qui vous intéressent. – asveikau

+0

@Lukas Oui, après l'appel, je ne veux plus retourner à la boucle d'événements et je ne veux même pas que quelque chose soit détruit. – shoosh

Répondre

-1

Il suffit d'appeler directement TerminateProcess, ou si vous voulez quelque chose de plate-forme indépendante: exit()

+0

Question: Comment utiliser X pour éviter d'avoir à utiliser Y Réponse: Utilisez simplement Y. Nice. – shoosh

+0

TerminateProcess fait ce que vous voulez. Pourquoi en avez-vous besoin enveloppé dans une fonction Qt? – PiedPiper

+0

indépendance de la plate-forme évidemment. – shoosh

4

Voici mon code pour win/mac/linux, mais pas portable pour d'autres systèmes d'exploitation.

void killMe() 
{ 
#ifdef Q_OS_WIN 
    enum { ExitCode = 0 }; 
    ::TerminateProcess(::GetCurrentProcess(), ExitCode); 
#else 
    qint64 pid = QCoreApplication::applicationPid(); 
    QProcess::startDetached("kill -9 " + QString::number(pid)); 
#endif // Q_OS_WIN 
} 
Questions connexes