如果超过5秒,如何使用C++退出进程?

Ale*_*lex 4 c++ process execution-time

我正在用C++实现一个检查系统.它使用不同的测试运行可执行文件.如果解决方案不正确,可能需要永远完成某些硬测试.这就是为什么我想将执行时间限制为5秒.

我正在使用system()函数来运行可执行文件:

system("./solution");
Run Code Online (Sandbox Code Playgroud)

.NET有一个很棒的WaitForExit()方法,那么本机C++呢?我也使用Qt,因此欢迎基于Qt的解决方案.

那么有没有办法将外部进程的执行时间限制为5秒?

谢谢

ism*_*ail 5

使用a QProcess,QTimer所以你可以在5秒后杀死它.就像是;

QProcess proc;
QTimer timer;

connect(&timer, SIGNAL(timeout()), this, SLOT(checkProcess());
proc.start("/full/path/to/solution");
timer.start(5*1000);
Run Code Online (Sandbox Code Playgroud)

并实施checkProcess();

void checkProcess()
{
    if (proc.state() != QProcess::NotRunning())
        proc.kill();
}
Run Code Online (Sandbox Code Playgroud)