windows10 為什麼不把POSIX完整支持了?

如果完整支持的話很多*nix程序便可以直接不加修改或者稍微修改就能運行了,不是可以提高windows的支持廣度嗎?

------------------------------------------------補充----------------------------------------------------

看到cygwin居然有那麼多人在用,而有些人用它基本上就純粹是為了把*nix上面的東西拿到win上面來編譯使用,但是往往都有各種問題,微軟提供個介面就能搞定的事情他們為什麼就是不願意干呢。或者是有什麼商業上面的考慮呢?


支持完整的POSIX早就實現了,最早叫做Service for Unix作為一個單獨的軟體包安裝。實現了所有POSIX的API甚至支持*nix的用戶認證,也就是說標準的POSIX程序在*nix下能跑的在這上面都能跑。後來這個作為一個標準的Windows組件併入Windows。當時這東西跑普通*nix程序比Cygwin和minGW都快,但是由於是微軟官方推出的,還是遭到冷落。再後來這玩意兒改名叫Subsystem for UNIX-based Applications,定位變成幫助*nix伺服器上跑的程序無痛遷移到Windows的玩意兒。尷尬的是也沒什麼人用。到Windows 2012和Windows 8的這一代之後,這玩意兒就正式砍掉了,但是留下了NFS支援等一些互操作的小組件。官方也直接推薦要跑POSIX的請直接用Hyper-V的虛擬化,或者安裝CygWin等第三方解決方案。

微軟很多東西不是不好,都是因為攤子太大被埋沒。話說任何有時間積澱的軟體多多少少都會有這麼一些知道的人很少但是很好的東西。想當年我玩操作系統的時候都是把系統安裝的exe或者binary一個一個看過去是幹什麼用的,往往能發現很多好玩的東西。


Windows 10現在有Linux子系統(以下簡稱WSL),Microsoft按照Linux Standard Base(以下簡稱LSB)重新實現了一個Linux內核來操起容器內的Ubuntu,但LSB標準內要求強制性支持POSIX,所以Windows 10隻要啟用了WSL就等同支持POSIX


Windows 8.1 時候已經移除了POSIX子系統 "With Windows 8.1 and Windows Server 2012 R2 SUA is no longer available. "。不知道這個問題還有什麼意義。

參見:

  • POSIX and UNIX Support in Windows
  • Features Removed or Deprecated in Windows Server 2012
  • Windows Services for UNIX


說個真實的笑話吧。知乎上也有,

計算機領域有哪些經典的典故或笑話? - 知乎用戶的回答

Korn Shell Story

至於題主的問題嘛,等母豬上樹的時候我會來回答的。


你真的相信「很多」*nix程序是僅僅用posix api就能寫出來的?


因為Windows系統上的posix介面很少有人用,用的話也是移植Unix等上的軟體才用。所以想用POSIX介面直接用LINUX吧。


推薦閱讀:

C printf #用法?
為什麼多數外掛都用易語言?
對心理學專業者來說,哪些編程語言是應該學習和掌握的?
CPU處理無條件轉移指令時,為何實際上要清除流水線?
為什麼Python有那麼多方便的庫而C++很少?

TAG:操作系統 | 編程語言 | 編程 | Linux | C編程語言 |