你可能不知道Windows系统下有一个UNIX子系统

摘要:
起初,我不太明白为什么Windows系统有unix头文件。最近,我阅读了《Windows操作系统原理》以充分理解。原因是Windows 2000/XP有三个环境子系统:POSIX/UNIX、OS/2和Win32。因为POSIX/UNIX子系统自然有一个UNIX SDK,所以上面的头文件出现就不足为奇了。POSIX代表UNIX类型操作系统的国际标准集。它鼓励制造商实现兼容的UNIX风格的接口,以便程序员可以轻松地将应用程序从一个系统移动到另一个系统。但是,Windows 2000/XP仅实现POSIX。1标准。

作者:朱金灿

来源:hhttp://blog.csdn.net/clever101

请看下面一段代码:

熟悉unixlinux平台开发的朋友可能以为它是在unixlinux平台开发的。实际上它是MSDN Library for Visual Studio 2005上的一个例子,可以在VS C++ 2005上成功编译(多字节字符集编译)。

开始我也不太明白为何Windows系统有unix的头文件。最近看了《Windows操作系统原理》才彻底明白了。究其原因,Windows 2000/XP有三种环境子系统:POSIX/UNIXOS/2Win32(OS/2只能用于x86系统)。因为有了POSIX/UNIX这个子系统,自然也就有了一个UNIX SDK,所以出现上面的头文件就不足为奇了。事实上微软的发展和unix系统是有一些渊源的:微软历史上曾推出过unix操作系统;windows系统的很多核心开发人员都是资深的unix操作系统的设计和开发人员。

那么这个POSIX/UNIX这个子系统有什么用呢?POSIX代表了UNIX类型的操作系统的国际标准集,它鼓励制造商实现兼容的UNIX风格接口,以使编程者很容易地将他们的应用程序从一个系统移到另一个系统。正因为具有这个特点,很多软件底层(想实现跨平台)、跨平台库喜欢调用UNIX SDK中的函数。我在著名的开源图像库GDAL就见过UNIX SDK中的函数。不过Windows 2000/XP只实现了POSIX.1标准(ISO/IEC 9945-11990IEEE POSIX 1003.1-1990)。所需的POSIX一致性文档位于Platform SDK中的/HELP目录中。

参考文献:

1.MSDN Library for Visual Studio 2005Microsoft Corporation

2.Windows操作系统原理》,尤晋元史美林陈向群向勇王雷马洪兵郑扣根马洪兵编著

免责声明:文章转载自《你可能不知道Windows系统下有一个UNIX子系统》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇App性能测试之耗电量span 换行下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

QList内存释放(看它内部存储的是否是Object,另外还有qDeleteAll)

QList<T> 的释放分两种情况: 1.T的类型为非指针,这时候直接调用clear()方法就可以释放了,看如下测试代码 #include <QtCore/QCoreApplication>#include <QList>#include <QString> int main(int argc, char *...

Linux平台Java调用so库JNI使用例子

1.确保gcc编译器已安装 2.编写HelloJNI.java代码,用native声明需要用C实现的函数。 如果源程序是包含在package里的话,应该建立同样的文件夹结构,比如/home/swan/test/net/wangliping/HelloJNI.java   package net.wanglipingpublic class Hello...

笔记vscode下的c_cpp_properties.json文件配置,兼容visual studio

这篇笔记的目的就是配置好c/c++插件代码的智能提示,方便以后写嵌入式代码的时候能够快速配置好例子(来自官方文档) { "env": { "myDefaultIncludePath": ["${workspaceFolder}", "${workspaceFolder}/include"], "myCompilerPath": "/...

Linux下C语言多文件的编译以及makefile的应用

1.关于编译和链接     一般来说,无论是C、C++,首先要把源文件编译成中间代码文件,在Windows下也就是.obj文件,UNIX下是.o文件,即Object File,这个动作叫做编译(compile)。然后再把大量的Object File合成执行文件,这个动作叫作链接(link)。         也就是源文件(.c 文件或者.cpp文件)首先会...

UVA 11404 简单LCS模型DP 字典序比较

这个题目求某个字符串中含的最长的回文子串。 就是一个很简单的LCS模型吗,而且我不明白为什么网上这么多人都说仿照某写法把字符串先逆序一下,然后求LCS,我只想问一下,有必要吗? 直接按LCS的套路来就行了啊,只不过方式变了下,按上面的写法,又麻烦,又根本没利用的LCS的精髓思想 即,先从间隔0位开始做起,然后是间隔1位。。2.。。n-1位,d[i][j]代...

OpenMP并行编程应用—加速OpenCV图像拼接算法

OpenMP是一种应用于多处理器程序设计的并行编程处理方案,它提供了对于并行编程的高层抽象,只需要在程序中添加简单的指令,就可以编写高效的并行程序,而不用关心具体的并行实现细节,降低了并行编程的难度和复杂度。也正因为OpenMP的简单易用性,它并不适合于需要复杂的线程间同步和互斥的场合。 OpenCV中使用Sift或者Surf特征进行图像拼接的算法,需要...