0
我試圖通過cmd.exe中的批處理文件在我的Qt應用程序中打開服務器。儘管我使用QProcess :: startDetached()來啓動命令行,但它在啓動後立即關閉。服務器正在啓動,但不是「提供服務」,該進程被終止。這裏是我的代碼:命令行關閉儘管使用QProcess :: startDetached()
void DICOMReceiver::startReceiver()
{
QProcess receiver;
boost::filesystem::path dbDir = boost::filesystem::absolute(databaseDirectory.toStdString());
receiver.startDetached("cmd.exe", QStringList() << "/c" <<
"dcmrcv.bat" << "AETitle:11112" << "-dest " << dbDir.string().c_str());
receiver.waitForStarted();
}
當我在cmd.exe中手動運行該批處理文件時,它按照需要工作。 有沒有人有一個想法如何保持進程運行,以便我可以使用服務器?
謝謝你的答案,但它仍然是啓動後立即關閉。我看到服務器的輸出在屏幕上衝過來,然後消失。我試圖在沒有其他論據的情況下啓動它,但這也不是問題。當我啓動cmd.exe時,它可以工作(即使使用我的第一個版本)。 –
然後問題不在於你的代碼,而是批處理文件提前退出。用一個只顯示其參數的虛擬批處理文件替代,並在結尾執行「暫停」。它會工作。然後慢慢開始從'dcmrcv.bat'向它添加東西。它確實在調試101,而且在這一點上與Qt或C++無關。 –
對我來說似乎不合邏輯,因爲當我在cmd.exe中手動調用該批處理文件時,該批處理文件未關閉,並且在創建指向該文件的鏈接時給予它所需的參數,並且只需運行該鏈接即可。它只是在使用QProcess時關閉。但我會試一試。 –