2009-10-07 3 views
2

Есть ли способ в Qt прекратить действие a'la TerminateProcess текущего процесса?Qt: убить текущий процесс?

QProcess::kill(), похоже, применим только к другим внешним процессам.

+0

Неужели это действительно нужно убить? Недостаточно ли 'QCoreApplication :: exit()'? –

+0

Я думаю, что люди QT не думали об этом обернуть. Возможно, вам придется запрограммировать нужные вам API-интерфейсы платформы. – asveikau

+0

@Lukas Да, после вызова я не хочу возвращаться к циклу событий, и на самом деле я даже не хочу, чтобы что-то было уничтожено. – shoosh

ответ

-1

Просто позвоните TerminateProcess напрямую, или если вы хотите что-то платформа независим: exit()

+0

Вопрос: Как использовать X, чтобы избежать использования Y Ответ: Просто используйте Y. Хороший. – shoosh

+0

TerminateProcess делает то, что вы хотите. Зачем вам это нужно в Qt? – PiedPiper

+0

Независимость от платформы очевидно. – shoosh

4

Вот мой код для Win/Mac/Linux, хотя и не портативный для других операционных систем.

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 
}