如果我直接從Windows命令行(cmd
)運行Qt應用程序,它將立即返回到shell,即使GUI繼續運行;我假設它在父節點退出之前創建了第二個進程。從命令行運行Qt應用程序不會阻止
如果我運行Qt應用程序間接雖然,從一個批處理文件或Python腳本,它不行爲相同的方式;它會阻止,直到應用程序實際上退出:
這是Qt的標準行爲?在文檔或其他任何地方我都找不到它。它可以定製?我更喜歡應用程序在從命令行運行時總是阻塞。
如果我直接從Windows命令行(cmd
)運行Qt應用程序,它將立即返回到shell,即使GUI繼續運行;我假設它在父節點退出之前創建了第二個進程。從命令行運行Qt應用程序不會阻止
如果我運行Qt應用程序間接雖然,從一個批處理文件或Python腳本,它不行爲相同的方式;它會阻止,直到應用程序實際上退出:
這是Qt的標準行爲?在文檔或其他任何地方我都找不到它。它可以定製?我更喜歡應用程序在從命令行運行時總是阻塞。
這是正常的Windows行爲。
在控制檯控制檯中,程序等待。 GUI程序不是。這些規則在start /?
中指定(提到新行爲是NT4到Windows 2000)。
因此Start /w c:\windows\notepad
。
啊,你說得對;我一直在尋找特別的Qt,這使得它很難找到。原來,這已經在[超級用戶](https://superuser.com/questions/908664/have-the-command-prompt-launch-an-application-like-notepad-and-block-until-it-是) –
我想它與控制檯輸出的上下文有關。修復應該特定於進程啓動,而不是Qt。 – AlexanderVX
爲什麼要運行應用程序以阻止交互式提示?它是否通過'AttachConsole(ATTACH_PARENT_PROCESS)'附加到其父控制檯?否則,我可以看到的唯一原因是在'%errorlevel%'中設置退出代碼。默認行爲是存在的,因爲在大多數情況下,讓CMD等待GUI應用程序或通過'start'創建新控制檯的控制檯應用程序是沒有意義的。 – eryksun