簡體   English   中英

os.platform()返回darwin而不是OSX

[英]os.platform() returns darwin instead of OSX

os.platform();

上面的JS指令返回OS的名稱。

  • 當它在Ubuntu上運行時,它返回

     'linux' 
  • 當它在Macbook上運行時,它返回

     'darwin' 

我想知道為什么不返回osxunixbsd ..?

darwin是osx的分支嗎?

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

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

Darwin是OSX的核心,同樣,Linux是Debian,Ubuntu以及其他所有Linux發行版的核心。

因此,雖然你可以100%確定任何Apple產品(macOS,OSX,iOS,watchOS,tvOS)將返回Darwin,但從技術角度來看,假設darwin只會出現操作系統,這是不正確的,因為一些低調的開源項目像PureDarwin一樣存在,並且thoses也將返回darwin

但是,我不知道node.js的任何(官方)端口對於任何其他基於Darwin的操作系統而不是OSX,所以在實踐中,是的,如果你得到darwin ,你可以確信它是OSX。

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;
}

注意:從OS X 10.8開始,上面顯示的Gestalt()用法已被棄用,但它的替換似乎在OS X 10.10之前不可用,因此您可能需要使用Objective-C( [processInfo operatingSystemVersion] )並分支API可用性就像Chromium 在這里所做的一樣。

達爾文是蘋果給OS X的原始名稱。 之所以如此,是因為它是操作系統發展中的NeXT步驟。

暫無
暫無

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

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