系统接口和标准的C库,是不同的两个范畴。
标准C库,各个平台的C编译器都应该支持,具有跨平台的性质。
系统接口则是系统相关的,UNIX的系统接口,在Win上就肯定不能用。
那么两者是不是还有联系呢,其实是的。标准C库,跟系统相关的部分,不也是通过系统调用/系统接口实现的么。所以系统接口可以实现一部分的标准C库,系统接口为特定系统的程序开发提供了服务,这部分服务一般是不能跨平台的。
这是我对这个主题的理解。
文件描述符
- UNIX系统,或者linux这种UNIX like系统,所有的外围设备,都看做是文件系统的文件
- 所有的 输入/输出 都要通过读文件和写文件完成
- 正常打开文件后,操作系统会向程序返回一个小的非负整数,称为文件描述符 file descriptor
- 之后的文件访问,都通过文件描述符完成,而不是文件名
- stdin, stdout, stderr的文件描述符分别是0, 1, 2
- 下文的文件描述符简写为 fd 吧
- shell 会对不同的文件赋予 fd 0和1,以便完成重定向和管道
- 程序本身并不需要关心 fd 0, 1现在被赋予了谁
- fd 2一般还是保留到显示器上
低级I/O read 和 write
- read 和 write 是系统调用
- 所谓系统调用是UNIX提供给用户程序来调用的函数,以此提供操作系统的服务
- C语言程序通过read和write函数,使用I/O的系统调用
- 3个参数