1
我有一个启动另一个应用程序的Qt应用程序。如果子应用程序在外部终止,我想接收一个信号。Qt句柄进程终止
的代码是:
CaptureApp::CaptureApp(int& argc, char** argv): QApplication(argc, argv)
{
launchDaemon();
}
void CaptureApp::launchDaemon()
{
QString command = "daemon";
QStringList arguments;
arguments << "somearg";
process = new QProcess(this);
process->start(command, arguments);
connect(process,SIGNAL(stateChanged(QProcess::ProcessState)),this,SLOT(daemonDied(QProcess::ProcessState)));
connect(process,SIGNAL(finished(int)),this,SLOT(daemonDied(int)));
}
void CaptureApp::daemonDied(QProcess::ProcessState state)
{
std::cout << "DAEMON DIED" << std::endl;
}
void CaptureApp::daemonDied(int code)
{
std::cout << "DAEMON DIED" << std::endl;
}
但是,当我杀子过程中出现的任何消息。我究竟做错了什么?
什么是'spaceNavProcess'?你为什么不改用'process'呢?我也怀疑杀死一个进程会触发任何信号。 – vahancho
@vahancho对不起,这里复制代码时出错。最初的名字是好的 – Lecko
守护进程是否正在启动一个实际的,写得很好的守护进程?如果是这样,它将从其父母分离。你可以用'pstree'或'ps aux'来检查这个守护进程是否成为PID 1的子进程('init'或'systemd'或其他)。注意:这就是为什么Qt特别是用于启动守护进程(或者模拟一个写得很好的守护进程,它将从它的父进程中分离出来)的'QProcess :: startDetached()'。 – jbm