作者:朱金灿

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

请看下面一段代码:

#include <time.h> #include <sys/types.h> #include <sys/stat.h> #include <stdio.h> #include <errno.h> int main( void ) { struct _stat buf; int result; char timebuf[26]; char* filename = "F://MyTest//MyTest//src//TestUnix//stdafx.h"; errno_t err; // Get data associated with "crt_stat.c": result = _stat( filename, &buf ); // Check if statistics are valid: if( result != 0 ) { perror( "Problem getting information" ); switch (errno) { case ENOENT: printf("File %s not found./n", filename); break; case EINVAL: printf("Invalid parameter to _stat./n"); break; default: /* Should never be reached. */ printf("Unexpected error in _stat./n"); } } else { // Output some of the statistics: printf( "File size : %ld/n", buf.st_size ); printf( "Drive : %c:/n", buf.st_dev + 'A' ); err = ctime_s(timebuf, 26, &buf.st_mtime); if (err) { printf("Invalid arguments to ctime_s."); return 1; } printf( "Time modified : %s", timebuf ); } getchar(); return 0; }

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

开始我也不太明白为何Windows系统有unix的头文件。最近看了《Windows操作系统原理》才彻底明白了。究其原因,Windows 2000/XP有三种环境子系统:POSIX/UNIX、OS/2和Win32(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-11990或IEEE POSIX 1003.1-1990)。所需的POSIX一致性文档位于Platform SDK中的/HELP目录中。

参考文献:

1.     MSDN Library for Visual Studio 2005,Microsoft Corporation

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

转载于:https://www.cnblogs.com/lanzhi/archive/2009/06/09/6471148.html

你可能不知道Windows系统下有一个UNIX子系统相关推荐

  1. python修改文件格式为unix_软件测试技术之如何用python在Windows系统下,生成UNIX格式文件...

    本文将带你了解软件测试技术之如何用python在Windows系统下,生成UNIX格式文件,希望对大家学测试技术有所帮助 如何用python在Windows系统下,生成UNIX格式文件 平时测试工作中 ...

  2. python将字符串s和换行符写入文件fp_软件测试技术之如何用python在Windows系统下,生成UNIX格式文件...

    本文将带你了解软件测试技术之如何用python在Windows系统下,生成UNIX格式文件,希望对大家学测试技术有所帮助 如何用python在Windows系统下,生成UNIX格式文件 平时测试工作中 ...

  3. python将文件转成linux格式,怎么用python在Windows系统下,生成UNIX格式文件

    如何用python在Windows系统下,生成UNIX格式文件 平时测试工作中,少不了制造测试数据.最近一个项目,我就需要制造一批可在UNIX下正确读取的文件.为确保这批文件能从FTP下载成功,开发叮 ...

  4. 如何利用python在一个文档里xie'ru_如何用python在Windows系统下,生成UNIX格式文件...

    平时测试工做中,少不了制造测试数据.最近一个项目,我就须要制造一批可在UNIX下正确读取的文件.为确保这批文件能从FTP下载成功,开发叮嘱我:"文件中凡是遇到换行,换行符必须是UNIX下的L ...

  5. Windows系统下制作一个记事本以语音方式读出你输入的文字 以及放到开机启动项,开机自启动读出语音!

    右键新建一个记事本,输入下面代码: 代码: createobject("SAPI.spvoice").speak"123" 在speak里面输入你想让他读出来的 ...

  6. NSIS(Nullsoft Scriptable Install System)开源安装程序制作软件使用详细步骤(Windows系统下)

    NSIS(Nullsoft Scriptable Install System)开源安装程序制作软件使用详细步骤(Windows系统下)安装包制作 1.软件详情 软件版本 版本说明 翻译跟进 2.教程 ...

  7. windows10 oracle自动备份,Windows系统下oracle 自动备份数据库

    Windows系统下oracle 自动备份数据库 1.创建批处理文件(.bat) 2.建立windows 定时任务 2.1创建任务 2.2 常规处 ->填写任务名称 2.3触发器 2.4 操作 ...

  8. 转: windows系统下mysql出现Error 1045(28000) Access Denied for user 'root'@'localhost'

    windows系统下mysql出现Error 1045(28000) Access Denied for user 'root'@'localhost' 转自 http://zxy5241.space ...

  9. windows系统下的Qt安装

    Qt Creator下载和安装(详细教程) 简介 Qt是跨平台的图形开发库,目前由Digia全资子公司 Qt Company 独立运营,官方网址:  http://www.qt.io/  也可以访问Q ...

最新文章

  1. 常见的集合容器应当避免的坑
  2. .net 访问 geoserver 发布的 wms   跨域问题解决方案
  3. 交换和路由的区别?VLAN的特点?
  4. Exchange 2007 迁移 2010
  5. 信用贷款额度是怎么确定的?
  6. Unity3D Shader入门指南(二)
  7. 51单片机雾化片自动扫频程序_单片机简介
  8. 这两年多我写PHP业务代码的方式是如何进化的
  9. 常用正则验证(邮箱、手机号、密码)
  10. 自己组装服务器计算机,深度学习服务器组装经验过程分享
  11. Ajax Accordion(可折叠) 动态生成菜单
  12. delphi用IdTCPServer和IdTCPClient传输文件
  13. Jstorm到Flink 在今日头条的迁移实践
  14. rpcbind 、nfs无法启动问题
  15. MyBatis学习——第五篇(手动分页和pagehelper分页实现)
  16. ESP32 AT指令集 BT SPP测试
  17. map字符串转json格式
  18. Python多进程 struct.error: ‘i‘ format
  19. 程序员浪漫表白小程序
  20. 五、Sql Server 基础培训《进度5-数据类型(知识点+实际操作)》

热门文章

  1. HTML5游戏开发(三):使用webpack构建TypeScript应用
  2. 发展光伏产业 破解大气污染之困
  3. 数据泵避免个别表数据的导出
  4. Java基础复习(1) 为什么在java中我们要将main定义为一个static方法?
  5. Linux 后台开发常用命令目录(更新 ing)
  6. H5 获取连接参数,判断是否是手机端
  7. 2017-2018-1 20155321 20155330 《信息安全系统设计基础》实验四——外设驱动程序设计...
  8. 2017.10.3 国庆清北 D3T2 公交车
  9. 我和ASP.NET MVC有个约会
  10. 软件工程期末考试 AHNU