Windows与Unix思想
Unix与Windows的思想
- Unix中的哲学是“一切皆文件”,这里的一切皆文件是一个广泛的概念,有一些特殊的设备文件,在/dev目录下
- 物理设备在Unix中就对应一个特殊的设备文件,比如打印机就是/dev/lp0,这个设备文件直接与物理设备的串行端口连接,只要向这个设备文件中传入数据,就可以调用打印机。
- 而没有与物理设备直接连接的特殊的设备文件,称之为伪设备文件。伪设备文件一般都是成对出现的,就像是打电话一样,通过这种逻辑关系就可以实现与物理设备一样的功能,比如在伪设备的一端发送一串字符串,在另一端就会就收到这个字符串,另一端可能的操作就是将这个字符串原样返回,或者对其进行加密再返回,在或者将其传送到/dev/lp0设备文件中调用打印机打印文件。
- 在Unix中命令行中的字符都将会被转换成为文件序列(文件流),这样才能够实现“一切皆文件”的思想,任何东西都可以被抽象成文件流。
- 在Unix中,要使用命令行,先启动一个终端,接着启动一个shell,shell和终端通过pty伪终端设备通信,也就是在mac下,我们鼠标点击terminal这个终端应用程序,在进入到终端的程序之后,会默认启动一个shell,但是在Windows中却是用户只能启动命令行程序,而不能启动终端,在Windows中我们没有看见过一个terminal程序,只要我们启动了一个shell,如cmd或者powershell,Windows会自动为我们启动一个一个的控制台,将他们依附在一起。
- Windows中的哲学是“一切皆对象“
- 在早期的windows中,其实也是参考着Unix的哲学思想,创建一些特殊的设备文件,比如要打印文件,就将文件输出到DLT设备文件中就行了,windows中的特殊文件与文件系统是分离的,他们是直接在内核中实现了,所有特殊文件的作用是是全局的,不管是在C:还是在E:中,都是可以直接使用PRN名称的,而不像是其他文件一样,需要提供相对路径或者绝对路径。
- 后来随着面向对象思想的发展,Windows开始采用面向对象的思想进行设计,一提到面向对象,就应该联想到API,所有Windows的”一切皆对象“就是”面向API“编程。但是Windows有为了兼容老的版本,还是保留了之前”一切皆文件“的特殊设备文件。所以现在的Windows就有了一个bug,命名的文件去掉扩展名之后不能使Windows为了兼容而保留的特殊设备文件的文件名,比如aux.txt, aux.h, con.txt等等,其他他们在Windows中已经用的不多了,在windows都是采用API实现这些了。
- 在命令行程序中键入的字符,虽然我们看到的是和在Unix shell中见到的一样,都是字符串,但是在回车之后就完全不听了,在Unix中会将内容转换为文件流,而Windows会将其转换为消息进行传输,也就是调用等效的API,为Console API,也就是说,如果我们现在想要实现一个Powershell,那么一定会疯狂的调用Console API。虽然在Unix中写bash也是调用api的进行系统调用的,但是两者在内部的实现是不同的,在Windows中的会将其封装成对象,接着在调用对象的API,而在Unix中则是直接操作的,没有加上对象这一层。为了能够变出跨平台的程序(以桌面程序为例),比如qt等,他们提供了统一的接口,在内部实现上调用了两个操作系统的API。调用Windows的API一般需要获取句柄,接着通过这个句柄调用对应的函数,而在Unix中就是函数,Windows的API数量是Unix的好几倍。
Windows与Unix思想的更多相关文章
- Windows和Unix下的编码问题
今天测试shell脚本时,执行报错: ./report.sh: /tmp/tmp.E8ekx6r5Qq/report.sh: /bin/bash^M: bad interpreter: No such ...
- Notepad++中设置Windows、Unix、Mac三种行尾换行符格式间的转换
(1)首先,要设置NotePad++能显示换行符,这个才干看到效果, 视图-->显示符号-->显示行尾符. {2}设置行尾符格式:编辑-->档案格式转换-->(可选Window ...
- WinScp结合Putty在Windows与UNIX之间进行文件传输
1. 关于传输协议: SSH Secure Shell安全外壳协议 SFTP Secure File Transfer Protocal安全文件传送协议 2. WinScp与Putty的作用: Put ...
- WINDOWS和UNIX换行符的理解
# WINDOWS和UNIX换行符的理解 **file1.txt**17.143.161.37 其他 美国54.163.255.40 其他 美国 弗吉尼亚州 亚马逊公司 **[ro ...
- Linux,Windows和UNIX的进程调度的分析
摘要 : 本文以Linux ,Unix ,Windows 操作系统为例,分析其进程调度策略,以期对进程调度过程有更深层次的认识 关键词 : 进程调度 优先级 时间片轮转 实时进程 分时技术 ...
- getch 和 getchar 在 windows 和 unix下的区别
注意getch()是从console读取,(非标准函数) getch()需要的头文件是<conio.h>. 而getchar()是从stdin,一般是指键盘 windows平台下ENTER ...
- 在Windows和UNIX下利用PHP和LDAP进行身份验证
我现在的老板曾要求我为企业内部的Web服务提供一种标准的身份验证方法.我遇到的一个主要问题就是我们公司主要使用了两种平台:UNIX和.所以,我的第一个想法并不很成功:它要求每个员工都使用UNIX或者L ...
- C++ -windows与unix路径分隔符
文件路径中通常使用正斜杠和反斜杠 在Windows中 C++中“\\”是一种转义字符,他表示一个‘\’,就像\n表示回车一样.所以C++中的路径名: D:\matcom45\doc\users\_th ...
- Windows、Unix、Linux是什么类型的操作系统?
Windows:具有图形用户界面的视窗操作系统. Unix:多用户分时操作系统. Linux:类似Unix操作系统,用于个人计算机.
随机推荐
- linux学习之路(4)
用户身份与文件权限 通过uid来区分: 管理员 UID 为 0:系统的管理员用户. 系统用户 UID 为 1-999: Linux 系统为了避免因某个服务程序出现漏洞而被黑客提 权至整台服务器,默认 ...
- SQL Server Profiler (SQl跟踪器)的简单使用
一.工具介绍 在实际开发中,我们的数据库应用系统因为不可避免会存在有大量表,视图,索引,触发器,函数,存储过程,sql语句等,所以会出现一系列问题,有问题不可怕,找对工具很重要.接下来我就介绍一款性能 ...
- 「BZOJ 3209」花神的数论题
Title Link 戳我 Title Solution 这道题可以运用组合数的思想啊,数位dp也可以,随便你怎么做,这里就讲一讲组合数的做法吧,要小于n,所以我们可以枚举n二进制下1的位置,在i-1 ...
- C# LINQ(5)
目前都是说的单数据差距,如果多数据进行查询LINQ该如何呢? 那么LINQ就应该使用关键字 join on equals 现有代码: static void Main(string[] args) { ...
- kali linux之被动信息收集recon-ng
开源的全特性的web侦查框架,基于python开发 命令格式与msf一致 使用方法:模块,数据库,报告 -h 帮助信息 -v 版本信息 -w 进入工作区,如果没有此工作区,则创建该工作区 -r 批量的 ...
- PLSQL导出语句的查询结果
不需要把全部结果都展示出来
- [Swift]八大排序算法(二):快速排序
排序分为内部排序和外部排序. 内部排序:是指待排序列完全存放在内存中所进行的排序过程,适合不太大的元素序列. 外部排序:指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存 ...
- libcaffe.so.1.0.0: cannot open shared object file: No such file or directory 运行时报错
caffe安装好后lib没有配置到/usr/lib或/usr/local/lib中,需手动配置: sudo vim ~/.bashrc export LD_LIBRARY_PATH=your_path ...
- 原生JS实现返回顶部和滚动锚点
;(function (window,doc,undefined) { function rollingAnchor(){ this.timer =''; } rollingAnchor.protot ...
- vcftools安装与使用
官网地址:https://vcftools.github.io/examples.html vcftools的软件下载:https://vcftools.github.io/examples.html ...