系统调用和库函数
系统调用:
- 用户空间进程访问内核的接口
- 把用户从底层的硬件编程中解放出来
- 极大的提高了系统的安全性
- 使用户程序具有可移植性
- 是操作系统的一部分
库函数:
- 库函数为了实现某个功能而封装起来的 API 集合
- 提供统一的编程接口,更加便于应用程序的移植
- 是语言或者应用程序的一部分
- 库函数不一定都包括系统调用
输入和输出
- 文件描述符
- 顺序分配的非负整数
- 内核用以表示一个特定进程正在访问的文件
- 其他资源(socket、pipe 等)的访问标识
- 标准输入、标准输出和标准出错
- 0、1、2 在进程创建时由内核自动为我们分配,由 shell 默认打开
- 不用缓存的 I/O
- 通过文件描述符进行访问
open()
/read()
/write()
/lseek()
/close()
…
- 标准 IO:
- 通过
FILE*
进行访问 printf()
/fprintf()
/fopen()
/fread()
/fwrite()
/fseek()
/fclose()
…
- 通过