驱动学习日记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);
}
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);
}
相关文章推荐
- linux 文件操作系统调用
- java使用jdic组件调用ie内核-实现调用本地操作系统文件
- Java代码调用操作系统可执行文件打开相应文件一行代码实现
- 操作系统的文件系统基本调用命令
- linux 文件操作系统调用
- Linux操作系统下,通过系统调用和库函数分别实现对文件的拷贝
- 文件打开的过程——调用fd=open()时操作系统所做的工作
- 文件打开的过程——调用fd=open()时操作系统所做的工作
- c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程
- 文件操作系统调用
- Python根据操作系统自动调用创建文件目录小脚本
- 文件操作系统调用_壹
- linux 文件操作系统调用
- 在ASP.NET程序中存储和调用word文件(转载)
- .Net/C# 应用程序直接读取本地 Cookies 文件 (由于 WinXP SP2 调用 API: InternetGetCookie 无果)
- 使用PB调用API自动更新(非FTP模式)(四、统计复制文件数量函数F_CONNECT_COPYCOUNT)
- 调用本地的程序打开制定文件
- VC中调用CHM帮助文件
- 如何在代码中调用“文件打开方式对话框”?
- 在ASP文件调用DLL