1、不管cmd还是xterm,都是软件,虽然也都是操作系统的工具,但本身是在操作系统之上的软件。所以其功能上的差异其实是软件本身功能的差异,比如Cygwin或者msys可以在Windows上模拟Linux的环境,功能一样非常强大,是因为这些模拟环境里功能强大。所以有人说cmd功能太弱,那是因为微软不重视cmd下的工具开发,如果把Linux的xterm里的命令都支持了那么cmd一样可以很强大。
2、Linux里,console是一个原生的支持,Linux自带原生的POSIX子系统,一个进程的生命周期里一直都有STDIN/STDOUT/STDERR的存在,这是Linux的VFS所默认提供的。也就是说你可以用,也可以不用,但它一直存在。Windows的POSIX子系统则不是原生的, Windows只支持NT子系统,其余的都是模拟的,Windows进程默认没有STDIN/OUT/ERR,所以Windows进程要想使用控制台,必须先初始化,控制台程序是在CRTMain里调用initterm_e来初始化的。表面上,在Windows的控制台也可以用printf输出,但实际上Windows里用的是WriteConsoleOutput输出。Linux则是直接从printf到fd的处理,最终调用write来首先。
说到本质,还是内核里处理方式不一样,一直是直接访问系统API,另一个要绕到子系里。
取消
评论