os.platform() 返回 darwin 而不是 OSX
Posted
技术标签:
【中文标题】os.platform() 返回 darwin 而不是 OSX【英文标题】:os.platform() returns darwin instead of OSX 【发布时间】:2016-11-30 06:38:22 【问题描述】:os.platform();
上面的 JS 指令返回的是 OS 的名字。
在 Ubuntu 上运行时返回
'linux'
在Macbook上运行时返回
'darwin'
我想知道为什么不返回 osx
,unix
或 bsd
.. ?
darwin
是 osx 的一个分支吗?
如何使用Node.js获取MAC下操作系统的类型?
【问题讨论】:
【参考方案1】:Darwin 不是 OSX,OSX 是 Darwin。
Darwin 是 OSX 的核心,同样,Linux 是 Debian、Ubuntu 和所有其他 Linux 发行版的核心。
因此,尽管您可以 100% 确定任何 Apple 产品(macOS、OSX、ios、watchOS、tvOS)都会返回 Darwin,但从技术上讲,假设 darwin 永远只是那些操作系统是不正确的,因为有些低调存在开源项目,例如 PureDarwin,这些项目也会返回 darwin
。
但是,我不知道除 OSX 之外的任何其他基于达尔文的操作系统的 node.js 的任何(官方)端口,所以在实践中,是的,如果你得到darwin
,你可以确信它是 OSX。
【讨论】:
【参考方案2】:Darwin 是 OS X 的底层平台。
要获取 OS X 版本,您可以通过命令行(或子进程)执行此操作:defaults read loginwindow SystemVersionStampAsString
或 sw_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。
【讨论】:
【参考方案3】:Darwin 是苹果给 OS X 的原始名称。之所以这样命名,是因为它是操作系统演进中的 NeXT 步骤。
【讨论】:
以上是关于os.platform() 返回 darwin 而不是 OSX的主要内容,如果未能解决你的问题,请参考以下文章
live555 RTSP推送到Darwin出现404错误的解决