我在QProcess类中运行phantomjs.exe二进制文件时遇到问题。请考虑以下代码:
QString program = "phantomjs.exe";
QProcess *process = new QProcess(this);
process->start(program, QStringList() << "test.js");
当我启动应用程序主进程加载并且之后没有任何反应时,只创建了数百个其他phantomjs.exe(在TaskManager中检查它)以及conhost.exe进程。
我尝试了其他exe文件,比如notepad.exe,它运行得很好。出现记事本窗口。
你遇到过这个问题吗?
答案 0 :(得分:2)
您是否在测试脚本中调用了phantom.exit()
?
https://github.com/ariya/phantomjs/wiki/Quick-Start
console.log('Hello, world!');
phantom.exit();
希望有所帮助。
答案 1 :(得分:0)
检查后发现QProcess存在问题。我改用了SHELLEXECUTEINFO。这段代码对我很有用。这里没有phantomjs.exe的递归调用:
SHELLEXECUTEINFO shExecInfo;
shExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
shExecInfo.fMask = NULL;
shExecInfo.hwnd = NULL;
shExecInfo.lpVerb = L"runas";
shExecInfo.lpFile = L"phantomjs.exe";
shExecInfo.lpParameters = L"test.js";
shExecInfo.lpDirectory = NULL;
shExecInfo.nShow = SW_NORMAL;
shExecInfo.hInstApp = NULL;
ShellExecuteEx(&shExecInfo);