Tiny6410学习ing—(二)、嵌入式Linux应用开发—(2)、文件编辑(系统调用方式访问文件)—①
2012-10-29 12:45
781 查看
转载:http://blog.sina.com.cn/s/blog_7ec8fc2c01013tst.html
首先介绍一下文件的编程:
Linux中文件编程可以使用两种方法:
△:Linux系统调用
△:C语言库函数
注意:
Linux系统调用是依赖于Linux系统的,C语言与操作系统是独立的,在任何操作系统下,使用C语言库函数操作文件的方法都是相同的。
1、系统调用-创建
int creat(const char *filename,mode_t mode)
(注意:这里是有返回值的哦~~)
△:filename:要创建的文件名(包含路径,缺省为当前路径)
△:mode:创建模式(就是跟以前的文件模式一样的~~)
常见的创建模式(使用宏名):
S_IRUSR 可读
S_IWUSR 可写
S_IXUSR 可执行
S_IRWXU 可读、写、执行
其中除了可以使用上述宏名以外,还可以直接使用数字来表示文件的访问权限:
△:可执行-》1
△:可写 -》2
△:可读 -》4
△:无任何权限-》0
2、系统调用-打开
在介绍打开文件的之前先介绍一下文件描述:
在Linux系统中,所有打开的文件都对应一个文件描述符。
文件描述符的本质是一个由非负整数。
当打开一个文件时,该整数由系统来分配(也就是它所对应的函数的返回值喽~~)
int open(const char *pathname,int flags)
int open(const char *pathname,intflags,mode_t mode)
(这里也要注意了,也是有返回值的啊~~)
△:pathname:要打开的文件名(包含路径,缺省为当前路径)
△:flags:打开标志
常见的打开标志:
O_RDONLY 只读方式打开
O_WRONLY 只写方式打开
O_RDWR 读写方式打开
O_APPEND 追加方式打开
O_CREAT 创建一个文件
O_NOBLOCK 非阻塞方式打开
注意:
如果使用了O_CREATE标志,那就要使用有是哪个变量的函数~~
如果没有那个标志,就是用两个变量的标志~~
3、系统调用-关闭
当我们完成操作以后,需要关闭文件:
int close(int fd)
△:fd:文件描述符,就是2中打开一个文件的返回值喽,有开必有关吗,C语言就是这个道理啊~~
4、系统调用-读
int read(int fd,const void *buf,size_tlength)
功能:
从文件描述符fd所指向的文件中读取length个字节到buf所指向的缓冲区中,其中返回值为实际读取的字节数。
5、系统调用-写
int write(int fd,const void *buf,size_tlength)
功能:
把length个字节从buf指向的缓冲区中写到文件描述符fd所指向的文件中,
返回值为实际写入的字节数。
6、系统调用-定位
int lseek(int fd,offset_t offset,intwhence)
功能:
将文件读写指针相对whence移动offset个字节。
操作成功时,返回文件指针相对于文件头的位置(注意这里是文件头啊~~)
△:whence
可以使用下述值:
SEEK_SET: 相对文件开头
SEEK_CUR: 相对文件读写指针的当前位置
SEEK_END: 相对文件末尾
△:offset
offset可以取负值,表示向前移动。
例如:
lseek(fd,-5,SEEK_CUR)
调用可将文件指针相对当前位置向前移动5个字节。
7、系统调用-访问判断
有时我们需要判断文件是否可以进行某些操作(读、写等)~~
int access(const char *pathname,int mode)
△:pathname:文件名称
△:mode:要判断的访问权限。
可以使用下述值:
R_OK: 文件可读
W_OK: 文件可写
X_OK: 文件可执行
F_OK: 文件存在
注意:
当测试成功时,函数返回0,否则如果一个条件不符合时,返回-1.
例如:
#include <unistd.h>
int main()
{
if(access("/etc/passwd",R_OK)==0)
printf("/etc/passwd can be read!\n");
}
; w�_sa��pH�; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(0, 1, 70); ">功能:
从文件描述符fd所指向的文件中读取length个字节到buf所指向的缓冲区中,其中返回值为实际读取的字节数。
5、系统调用-写
int write(int fd,const void *buf,size_t length)
功能:
把length个字节从buf指向的缓冲区中写到文件描述符fd所指向的文件中,
返回值为实际写入的字节数。
6、系统调用-定位
int lseek(int fd,offset_t offset,int whence)
功能:
将文件读写指针相对whence移动offset个字节。
操作成功时,返回文件指针相对于文件头的位置(注意这里是文件头啊~~)
△:whence
可以使用下述值:
SEEK_SET: 相对文件开头
SEEK_CUR: 相对文件读写指针的当前位置
SEEK_END: 相对文件末尾
△:offset
offset可以取负值,表示向前移动。
例如:
lseek(fd,-5,SEEK_CUR)
调用可将文件指针相对当前位置向前移动5个字节。
7、系统调用-访问判断
有时我们需要判断文件是否可以进行某些操作(读、写等)~~
int access(const char *pathname,int mode)
△:pathname:文件名称
△:mode:要判断的访问权限。
可以使用下述值:
R_OK: 文件可读
W_OK: 文件可写
X_OK: 文件可执行
F_OK: 文件存在
注意:
当测试成功时,函数返回0,否则如果一个条件不符合时,返回-1.
例如:
#include <unistd.h>
int main()
{
if(access("/etc/passwd",R_OK)==0)
printf("/etc/passwd can be read!\n");
}
首先介绍一下文件的编程:
Linux中文件编程可以使用两种方法:
△:Linux系统调用
△:C语言库函数
注意:
Linux系统调用是依赖于Linux系统的,C语言与操作系统是独立的,在任何操作系统下,使用C语言库函数操作文件的方法都是相同的。
1、系统调用-创建
int creat(const char *filename,mode_t mode)
(注意:这里是有返回值的哦~~)
△:filename:要创建的文件名(包含路径,缺省为当前路径)
△:mode:创建模式(就是跟以前的文件模式一样的~~)
常见的创建模式(使用宏名):
S_IRUSR 可读
S_IWUSR 可写
S_IXUSR 可执行
S_IRWXU 可读、写、执行
其中除了可以使用上述宏名以外,还可以直接使用数字来表示文件的访问权限:
△:可执行-》1
△:可写 -》2
△:可读 -》4
△:无任何权限-》0
2、系统调用-打开
在介绍打开文件的之前先介绍一下文件描述:
在Linux系统中,所有打开的文件都对应一个文件描述符。
文件描述符的本质是一个由非负整数。
当打开一个文件时,该整数由系统来分配(也就是它所对应的函数的返回值喽~~)
int open(const char *pathname,int flags)
int open(const char *pathname,intflags,mode_t mode)
(这里也要注意了,也是有返回值的啊~~)
△:pathname:要打开的文件名(包含路径,缺省为当前路径)
△:flags:打开标志
常见的打开标志:
O_RDONLY 只读方式打开
O_WRONLY 只写方式打开
O_RDWR 读写方式打开
O_APPEND 追加方式打开
O_CREAT 创建一个文件
O_NOBLOCK 非阻塞方式打开
注意:
如果使用了O_CREATE标志,那就要使用有是哪个变量的函数~~
如果没有那个标志,就是用两个变量的标志~~
3、系统调用-关闭
当我们完成操作以后,需要关闭文件:
int close(int fd)
△:fd:文件描述符,就是2中打开一个文件的返回值喽,有开必有关吗,C语言就是这个道理啊~~
4、系统调用-读
int read(int fd,const void *buf,size_tlength)
功能:
从文件描述符fd所指向的文件中读取length个字节到buf所指向的缓冲区中,其中返回值为实际读取的字节数。
5、系统调用-写
int write(int fd,const void *buf,size_tlength)
功能:
把length个字节从buf指向的缓冲区中写到文件描述符fd所指向的文件中,
返回值为实际写入的字节数。
6、系统调用-定位
int lseek(int fd,offset_t offset,intwhence)
功能:
将文件读写指针相对whence移动offset个字节。
操作成功时,返回文件指针相对于文件头的位置(注意这里是文件头啊~~)
△:whence
可以使用下述值:
SEEK_SET: 相对文件开头
SEEK_CUR: 相对文件读写指针的当前位置
SEEK_END: 相对文件末尾
△:offset
offset可以取负值,表示向前移动。
例如:
lseek(fd,-5,SEEK_CUR)
调用可将文件指针相对当前位置向前移动5个字节。
7、系统调用-访问判断
有时我们需要判断文件是否可以进行某些操作(读、写等)~~
int access(const char *pathname,int mode)
△:pathname:文件名称
△:mode:要判断的访问权限。
可以使用下述值:
R_OK: 文件可读
W_OK: 文件可写
X_OK: 文件可执行
F_OK: 文件存在
注意:
当测试成功时,函数返回0,否则如果一个条件不符合时,返回-1.
例如:
#include <unistd.h>
int main()
{
if(access("/etc/passwd",R_OK)==0)
printf("/etc/passwd can be read!\n");
}
; w�_sa��pH�; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(0, 1, 70); ">功能:
从文件描述符fd所指向的文件中读取length个字节到buf所指向的缓冲区中,其中返回值为实际读取的字节数。
5、系统调用-写
int write(int fd,const void *buf,size_t length)
功能:
把length个字节从buf指向的缓冲区中写到文件描述符fd所指向的文件中,
返回值为实际写入的字节数。
6、系统调用-定位
int lseek(int fd,offset_t offset,int whence)
功能:
将文件读写指针相对whence移动offset个字节。
操作成功时,返回文件指针相对于文件头的位置(注意这里是文件头啊~~)
△:whence
可以使用下述值:
SEEK_SET: 相对文件开头
SEEK_CUR: 相对文件读写指针的当前位置
SEEK_END: 相对文件末尾
△:offset
offset可以取负值,表示向前移动。
例如:
lseek(fd,-5,SEEK_CUR)
调用可将文件指针相对当前位置向前移动5个字节。
7、系统调用-访问判断
有时我们需要判断文件是否可以进行某些操作(读、写等)~~
int access(const char *pathname,int mode)
△:pathname:文件名称
△:mode:要判断的访问权限。
可以使用下述值:
R_OK: 文件可读
W_OK: 文件可写
X_OK: 文件可执行
F_OK: 文件存在
注意:
当测试成功时,函数返回0,否则如果一个条件不符合时,返回-1.
例如:
#include <unistd.h>
int main()
{
if(access("/etc/passwd",R_OK)==0)
printf("/etc/passwd can be read!\n");
}
相关文章推荐
- linux_c 网络开发日记(3)系统调用方式访问文件
- LS8-linux系统调用方式文件编程之学习笔记
- 【嵌入式Linux学习七步曲之第一篇 Linux主机开发环境】虚拟机下Linux和windows的文件共享――mount方式
- Tiny6410学习ing—文件编辑(库函数访问文件)
- 【转改】嵌入式linux应用开发完全手册 5.2以总线方式访问硬件,地址对齐。
- 【嵌入式Linux学习七步曲之第一篇 Linux主机开发环境】虚拟机下Linux和windows的文件共享――共享方式
- 国嵌视频学习第二天——系统调用方式访问文件
- 【嵌入式Linux学习七步曲之第一篇 Linux主机开发环境】虚拟机下Linux和windows的文件共享――共享方式
- 【嵌入式Linux学习七步曲之第一篇 Linux主机开发环境】虚拟机下Linux和windows的文件共享――mount方式
- Linux应用程序开发笔记->文件编程之系统调用方式相关函数
- linux系统调用方式访问文件
- linux应用程序开发-文件编程-系统调用方式
- YAFFS2文件系统在嵌入式LINUX系统中的应用
- YAFFS2文件系统在嵌入式LINUX系统中的应用
- LInux文件基础知识和文件目录操作(系统调用函数方式)
- 学习嵌入式Linux系统开发基础 第一课(Linux系统简介)
- 学习嵌入式Linux系统开发基础 第六课(gcc与gdb)
- Linux下通过系统调用(API)和C语言库函数对文件进行访问
- Unix原理与应用(第四版)学习笔记2--系统调用之文件篇
- 学习笔记 --- LINUX 应用调试之使用strace命令追踪系统调用