2012-12-15 88 views
1

現在我正計劃在C/C++中編寫一個小型服務器。該軟件的目的地將是某種Linux服務器,所以我認爲programmin在Linux上的服務器將是最好的主意。問題是,我擁有一臺MacBook(Air),並且我建立了一個Linux VM,但是IDE(Qt creator)嚇壞了我,所以我想在Xcode中開發服務器,然後在編譯完成後VM。所以我想知道pthread和socket.h的可移植性等級有多高?如果他們可以移植到某個等級,你會推薦我在Xcode中開發嗎? (我是一種熟悉Xcode的人,因爲服務器的客戶端將是一個iOS應用程序,對不起我的可憐英語(我來自GER)和(可能)感謝您的評論:)pthread和socket.h的可移植性

+2

什麼語言? C還是C++? –

回答

3

您可以使用一個第三方庫,如boost,它抽象出threading librarysocket library這兩個平臺的具體細節。升級支持Linux和Mac OS X操作系統。

我的回答是c++具體,我看你也用c標記了這個問題。

+0

那麼,對於線程,OP應該使用內置的C++ 11線程(如果可用的話),而不是提升。 – Omnifarious

0

雖然使用Boost可能會讓您的生活更輕鬆,但回答<pthread.h><sys/socket.h>這兩個標準都是標準POSIX標頭,並且可以在POSIX系統(如Mac OS X和GNU/Linux)之間移植。在GNU頭文件中可能有些東西是非標準的擴展或是新的POSIX的一部分,因此Mac OS X不支持,但在Mac OS X上可用的<pthread.h><sys/socket.h>中的幾乎所有內容也可在GNU/Linux上使用並工作相同。可以肯定的是,通過閱讀函數的手冊頁或在線檢查Single UNIX Specification(該鏈接適用於Mac OS X支持的POSIX的舊版本,請確保您只使用便攜式POSIX功能而不是特定於平臺的功能, GNU/Linux的大多是符合最新POSIX 2008規格)

<sys/socket.h><pthread.h>

注意,Mac OS X支持的基礎POSIX規範但並非所有選裝件,如它不支持POSIX 2001的「Timers」選項(這是POSIX-2008中基本規範的一部分,即不可選)