2011-11-09 92 views
-2

我在C++程序中使用main.exe,然後在某些情況下調用其他可執行文件。暫停exe文件

如何讓exe暫停,直到執行另一個exe文件?

實施例:

我有針對不同的情況(錯誤,無效ARG等)創建的對話框一個exe。有時我可能會從用戶&中獲得一個參數,有時候我可能不會。 所以,直到我從用戶採取arg,我如何讓我的main.exe暫停?另外,我想在另一個EXE的ARG。

所以我應該使用指針動態&通存儲ARG在任何一個exe文件,我需要的ARG內存位置?通過這樣做我做內存泄漏?在我需要該參數結束後,我將使用刪除

+0

對於linux,它是fork/wait。在Windows上,我不知道,但它必須有類似的東西。 –

回答

1

要在Windows上執行此操作,您需要用CreateProcess()產生您的進程,然後使用WaitForSingleObject等待PROCESS_INFORMATION結構中返回的句柄。

只要確保CreateProcess調用成功。任何參數都可以通過命令行或使用共享內存或命名管道傳遞,有關示例,請參見this

0

最簡單的解決方案是執行其他程序的system函數。在你main.exe你會寫:

system("other.exe"); 

您也可以通過命令行參數:

#include <stringstream> 
... 

std::stringstream ss; 
ss << "other.exe" << " " << "first-arg" << " " << "second-arg"; 
system(ss.str().c_str()); 

對於這一點,就沒有必要用new分配對象,但該參數在被解析來自argcargvother.exe。您的main.exe將暫停,直到other.exe完成。

1

您可以使用Boost(不記得確切的庫名),或者你可以使用:

wait爲* UNIX

WaitForSingleObject爲贏。

如果我沒有錯,Boost庫實際上會使用這些函數。

+0

'WaitForSingleProcess'?你確定你不是指'WaitForSingleObject' – Necrolis

+0

@Necrolis是的,我編輯了我的答案。謝謝! :) –

+0

非常感謝:) –