UNIX操作系统通过系统调用提供服务,系统调用实际上是操作系统内部的函数供用户使用。
1.文件描述符
创建文件时返回的一个小的非负整数,任何时候对文件的操作都是通过文件描述符标识文件的。
2.低级IO
int n_read = read(int fd,char *buf,int n)
int n_write = write(int fd,char *buf,int n)
返回值: 正确,实际传输的字节数
0,表示已经到达文件尾
-1,表示发生了某种错误
fd:0 标准输入
1 标准输出
2 标准错误
3.非标准输入输出文件操作
除了标准输入输出外,其他文件都必须在读写前显式的打开
int open(char *name,int flags,int perms)
int create(char *name,int perms)
perms指定权限,flags指明打开的方式(只读,只写,可写)
close(int fd) 断开描述符与文件的连接
unlink(char *name) 将文件name从文件系统删除
long lseek(int fd,long offset,int origin) 随机访问,origin=0(文件开始),1(当前位置),2(文件结束处)
标准库与系统调用
大部分的标准库函数都有一个同名的系统调用。标准库函数是调用系统调用来实现的。不同的是标准库函数带了个缓冲区,这样能够减少系统调用的次数。因为系统调用是很浪费时间的。要从用户空间拷贝数据到内核空间,进行了空间转换。另标准库的文件是用文件指针描述的而不是文件描述符。
阅读(523) | 评论(0) | 转发(0) |