2016-07-26 47 views
2
os.platform(); 

上面的JS指令返回OS的名稱。os.platform()返回達爾文而不是OSX

  • 當在Ubuntu拼命地跑,它返回

    'linux' 
    
  • 當上的Macbook拼命地跑,它返回

    'darwin' 
    

我想,爲什麼不回osxunixbsd ..?

darwin是osx的一個分支嗎?

如何使用Node.js獲取MAC在MAC下的類型?

回答

5

達爾文不是OSX,OSX是達爾文。

Darwin是OSX的核心,同樣的,Linux是Debian,Ubuntu和其他Linux發行版的核心。

由於開源項目已經結束,因此可以安全地假設一個標識爲Darwin的平臺是macOS(包括OSX),iOS,watchOS或tvOS,適用於mac,iPhone,apple watch和apple tv。

雖然你不能盲目地創建快捷方式darwin => OSX,但是我不知道其他設備的任何node.js端口,所以如果你得到達爾文,你幾乎可以肯定它是一個macOS設備,但它可能是OSX以外的另一個版本。

2

達爾文是蘋果給OS X的原始名稱。它被命名爲這樣,因爲它是操作系統演進中的NeXT步驟。

4

Darwin是爲OS X底層平臺

要獲得OS X版本而不是,您可以通過命令行(或子處理)做到這一點:defaults read loginwindow SystemVersionStampAsStringsw_vers -productVersion

要獲得通過C/C++版本(你可以寫一個結合從節點訪問):

// compile with: g++ osx_ver.cc -I/Developer/Headers/FlatCarbon -framework CoreServices 
#include <Gestalt.h> 
#include <stdio.h> 

int main() { 
    SInt32 majorVersion, minorVersion, bugFixVersion; 

    Gestalt(gestaltSystemVersionMajor, &majorVersion); 
    Gestalt(gestaltSystemVersionMinor, &minorVersion); 
    Gestalt(gestaltSystemVersionBugFix, &bugFixVersion); 

    printf("%d.%d.%d", majorVersion, minorVersion, bugFixVersion); 

    return 0; 
} 

注:Gestalt()我們上面顯示的年齡從OS X 10.8開始就被棄用了,但它的替代似乎在OS X 10.10之前是不可用的,所以您可能需要使用Objective-C([processInfo operatingSystemVersion])並在API可用性上進行分支,例如Chromium中的here

相關問題