簡體   English   中英

如何啟動另一個程序而不必在 C++ 中等待它?

[英]How to start another program without having to wait on it in C++?

如何讓 C++ 程序啟動另一個程序/進程(特別是 C++)而不等待它結束? (所以system()在這里不起作用,因為它將另一個程序/進程作為子進程啟動,對嗎?)

我正在考慮在另一個線程或其他東西上啟動第二個程序/進程,但我不確定這是否可行。

謝謝您的幫助。

編輯:運行 linux,抱歉錯過了那個精度......(准確地說是 ubuntu 11.10)

您可以將nohup與 system() 一起使用。 因此,您調用的 C++ 程序將在后台運行,但您的其他 C++ 程序將從 nohup 獲取退出信號並完成系統調用。 例如:

 system("nohup gedit &")

使用fork() (或clone()如果您想要線程而不是作業)創建一個 fork,然后在一個進程中使用execve()system()運行程序,並在另一個進程中繼續運行原始程序。

假設您在 Unix/Linux 上執行此操作,您可以使用forkexec的衍生物,其中fork基本上會通過復制當前進程來創建一個新進程。 然后,您還可以使用waitwaitpid等待孩子並檢索其退出狀態。

編輯:該死的人們總是比我發布得更快。 xD

如果它用於 MS Windows,則CreateProcess()是這樣做的方法。 引用: Note that the function returns before the process has finished initialization.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM