0

C++中有一個獨立於平臺的進程分叉方法嗎?標準是否提供任何功能或庫?C++中是否存在一種獨立於平臺的進程分支方式,比如某些標準庫?我怎樣才能讓我的代碼便攜?

爲了創建一個新的線程,有std::thread,我相信,當我們實現這個標準時,我認爲它使用了操作系統的底層線程模型。

是否有這樣的創建新流程的類比?

在Linux中,我可以通過使用fork()系統調用來分叉一個新進程。但是這在Windows中不起作用。所以,我正在尋找一種叉式進程的方法,它允許在多個平臺上重複使用相同的代碼。

早些時候提出的一些答案提出了類似的問題,如thisthis,建議使用QThread,OpenThread,Boost,SFML等。但是,目前標準提供了哪種方式?

如果不是,我如何使自己的代碼更便於攜帶?到目前爲止,我只需要它在Windows和Linux上工作,但是我想知道是否還有一種方法。

+0

沒有平臺無關的方式來fork()一個進程。而已。這不包括在任何標準中。 POSIX是Linux的標準。我一直聽說Windows的POSIX兼容層。你不妨調查一下。 –

+1

這個問題與您鏈接的問題完全相同;在任何已發佈的標準中都沒有關於創建新流程的規定,這就是爲什麼所有答案都涉及第三方庫的原因。 –

+0

特別感興趣的可能是[this](http://stackoverflow.com/a/10602727/8877)答案,其中指出「...現代系統上的線程和進程之間的實際差異很小;」你可能並不需要多個進程。 –

回答

1

該標準爲創建新流程提供的唯一標準是system。這可以讓你傳遞一個典型的字符串,就好像你已經把它輸入到一個shell中一樣(但不能保證)。如果內存服務,你也可以傳遞一個空指針來讓它打開一個shell供你使用(如果可能的話)。

這就是標準範圍內的可能範圍。