系统调用(API)
系统调用就是操作系统提供的一些功能给程序员使用,这些功能已经被封装成C函数的形式,但这些功能不是标准C的一部分
一般应用程序运行在用户态(使用的是0~3G的虚拟内存),系统调用时工作在内核态(使用的是3~4G的虚拟内存)
常用的标准库的函数绝大部分时间运行在用户态,底层偶尔也会调用系统调用进入内核态
系统调用使用运行就是内核代码,内核代码属于内核的一部分,该代码的外部接口是以函数形式定义在共享库中(linux-gate.so ld-linux.so.2)
time ./a.out
real 0m0.012s 执行总用时
user 0m0.000s 用户态执行时间
sys 0m0.000s 内核态执行时间
一切皆文件
UNIX/Linux为操作方便把所有的服务、设备等内容都抽象成了文件的形式,并提供了一套简单而统一的接口,这部分接口称为系统文件IO,也就是说UNIX/Linux把任何对象都可以当做文件处理,以文件形式访问
文件分类: 开头(ls -l显示的时候)
普通文件 - 包括纯文本文件、二进制文件、各种压缩文件
目录文件 d 类似Windows文件夹(必须由执行权限才能进入)
块设备文件 b 保存大块数据的设备,例如硬盘
字符设备文件 c 例如键盘、鼠标等等
链接文件 l 类似于Windows的快捷方式
管道文件 p
Socket文件 s 通常用于网络数据连接
文件相关的系统调用
#include <sys/types.h>
#include <sys/stat.h></