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

时间:2016-07-26 14:36:12

标签: node.js macos operating-system darwin

os.platform();

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

  • 在Ubuntu上运行时,它会返回

    'linux'
    
  • 在Macbook上运行时,会返回

    'darwin'
    

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

darwin是osx的分支吗?

如何使用Node.js获取MAC下的OS类型?

3 个答案:

答案 0 :(得分:8)

达尔文不是OSX,OSX是达尔文。

Darwin是OSX的核心,同样,Linux是Debian,Ubuntu和其他所有Linux发行版的核心。

因此,虽然你可以100%确定任何Apple产品(macOS,OSX,iOS,watchOS,tvOS)都将返回Darwin,但从技术角度来看,假设darwin只会出现操作系统是不正确的,因为有些低调存在开源项目,如PureDarwin,并且thoses也将返回darwin

但是,我不知道任何其他基于Darwin的操作系统的任何(官方)端口node.js,所以在实践中,是的,如果你得到darwin,你可以确信它是OSX。

答案 1 :(得分: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;
}

注意:自OS X 10.8以来,上面显示的Gestalt()用法已弃用,但在OS X 10.10之前,它的替换似乎不可用,因此您可能需要使用Objective-C({{1 }}和分支在API可用性上,如在Chromium中完成here

答案 2 :(得分:1)

达尔文是苹果给OS X的原始名称。之所以如此,是因为它是操作系统发展中的NeXT步骤。