您的位置:首页 > 其它

驱动学习日记2--文件操作系统调用

2014-08-31 13:20 85 查看
1.创建

int create(const char *filename,mode_t mode);

mode指定新建文件的读取权限

2.打开

int open(const char* pathname,int flags); int open(const char* pathname,int flags,mode_t mode);

pathname是我们要打开的文件名(包含路径名称,缺省认为在当前路径下面)flags可以是下表的形式:

O_RDONLY 只读打开 O_WRONLY 只写打开 O_RDWR 读写方式打开 (前三个只能三选1) O_APPEND 追加方式打开

O_CREAT 创建一个文件 O_NOBLOCK 以非阻塞方式打开 O_TRUNC 如果文件已经存在,则删除文件内容

mode访问权限:

标志表示太麻烦,用5个数字表示 第一位表示设置用户ID ,第二位表示设置组ID , 第三位用户自己的权限位 , 第四位表示组的权限 , 第五位 其他人权限。

1 执行 2 写 4 读 (可组合) eg . 10 705

1(设置用户ID) ,0(不设置组ID),7(1+2+4,读写执行),0(没有权限),5(读执行)

3.读写

int read(int fd,const void *buf,size_t length);

int write(int fd,const void *buf,size_t length);

参数buf为指向缓冲区的指针,length为缓冲区的大小(以字节为单位)。函数read()现从文件描述符fd所指定的文件中读取length个字节到buf缓冲区中,返回实际读取的字节数。write()过程反过来。

4.定位

int lseek(int fd,offset_t offset,int whence);

lseek()将文件读写指针相对whence移动offset个字节。操作成功时,返回文件指针相对于文件头的位置。whence可以取以下值:

SEEK_SET:相对文件开头 SEEK_CUR:相对文件读写指针的当前位置 SEEK_END:相对文件末尾

eg. lseek(fd,0,seek_end); 返回值是文件的长度。

5.关闭

int close(int fd);

例子:

#include<sys/types.h>

#include<sys/stat.h>

#include<fcntl.h>

#include<stdio.h>

#define LENGTH 100

main()

{

int fd,len;

char str[LENGTH];

/*创建打开一个文件*/

fd=open("hello.txt",O_CREAT|O_RDWR,00700);

if(fd){

/*向文件写入"hello world"*/

write(fd,"hello world",strlen("hello world"));

/*关闭文件*/

close(fd);

}

/*打开文件*/

fd=open("hello.txt",O_RDWR);

/*读取文件*/

len=read=(fd,str,LENGTH);

str[len]='\0';

printf("%s\n,str");

/*关闭文件*/

close(fd);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: