Chinaunix首页 | 论坛 | 博客
  • 博客访问: 239383
  • 博文数量: 108
  • 博客积分: 3092
  • 博客等级: 中校
  • 技术积分: 1172
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-25 16:35
文章分类

全部博文(108)

文章存档

2011年(3)

2010年(43)

2009年(19)

2008年(43)

我的朋友

分类: C/C++

2008-12-03 23:09:11

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(文件结束处)
 
标准库与系统调用
大部分的标准库函数都有一个同名的系统调用。标准库函数是调用系统调用来实现的。不同的是标准库函数带了个缓冲区,这样能够减少系统调用的次数。因为系统调用是很浪费时间的。要从用户空间拷贝数据到内核空间,进行了空间转换。另标准库的文件是用文件指针描述的而不是文件描述符。
 
 
阅读(531) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~