Windows 7 中基于 UNIX 的应用程序子系统

Svi*_*ish 13 unix windows-7

在 Windows 7 下的打开和关闭 Windows 功能对话框中注意到一个名为Subsystem for UNIX-based Applications的东西。以前从未见过它,看起来很有趣。它究竟是什么?它有什么用,我可以用它做什么?

Joe*_*oey 18

以前称为SFUUNIX 服务。它是 Windows 中的一个环境子系统,提供完全的 POSIX 合规性和大量通常随 UNIX 系统提供的工具。

作为一个环境子系统,这意味着它Windows API一起运行,直接在内核之上。因此,它并不比本机 Windows API 本身更多地被模拟,因此性能比 cygwin 好得多,例如。1

它主要用于直接在 Windows 上构建和运行 UNIX 应用程序,因此如果您最喜欢的 UNIX 程序没有附带 Windows 端口,您可以尝试在 SUA 中构建它:

Windows Services for Unix 和 Subsystem for Unix-based Applications 提供头文件和库,可以更容易地重新编译或移植 Unix 应用程序以在 Windows 上使用;它们不会使 Unix 二进制文件与 Windows 二进制文件兼容。最好将其视为一个独特的类 Unix 平台。

当前版本的 SFU 包含:

  • 超过 350 个 Unix 实用程序,例如 vi、ksh、csh、ls、cat、awk、grep、kill 等。
  • GCC 3.3 编译器、包含和库(通过 MS libc)
  • Microsoft Visual Studio 命令行 C/C++ 编译器的类似 cc 的包装器
  • GDB调试器
  • NFS 服务器和客户端
  • 一个 pcnfsd 守护进程
  • X11 工具和库
  • 使 NFS 挂载点显示为 Windows 共享的工具,反之亦然(网关服务)
  • 与 Active Directory (AD) 链接的 NIS 服务器功能
  • 一些Windows/Unix认证信息同步工具

SFU 不包含以下内容(但二进制文件可用于单独安装):

  • bash、OpenSSH、sudo、CVS、ClamAV、bzip2、gmake、curl、emacs、Apache、XView、Ruby、Tcl、Python

(维基百科)

由于 SUA 不会尝试成为 Linux 或 BSD,而只是简单的 POSIX,这也可能意味着许多依赖于特定平台的程序可能无法构建或运行。会想到假设 bash 而不是 sh 或 Linux 特定系统调用的 Shell 脚本。现在编写的程序很少可以直接在任何符合 POSIX 的系统上运行。此外,包含的 gcc 版本有点旧,这意味着它可能不支持您最近的 C99+ 优点。


1它仍然受到特定于 Windows 的限制,例如缓慢的进程启动时间,因此极端的分叉仍然会非常缓慢,这就是为什么您会等待很长时间./configure才能执行许多脚本或某些 makefile。

  • @Svish:您可以从 http://www.suacommunity.com/ 下载 OpenSSH SUA 二进制文件(以及更多) (4认同)
  • matthews:SUA 的可执行文件仍然是 POSIX 子系统应用程序(是的,我实际上使用了一个十六进制编辑器并查看了内部)。因此内核甚至不会想到从 Windows API 运行某些东西。 (2认同)