linux程序设计:第三章 文件操作

来源:互联网 发布:php tp框架介绍 编辑:程序博客网 时间:2024/04/29 05:06

一. linux文件系统

1.在linux中几乎一切都是文件,可以像使用文件一样时用磁盘文件、串行口和打印机和其他设备。

目录是用于保存其它文件的节点号的名字的文件。

硬件设备也被映射为文件。常用的设备文件有三个:

/dev/console 系统控制台

/dev/tty 控制终端

/dev/null 空设备

2.操作系统的核心,即内核是一组设备驱动程序,是一组对系统硬件进行控制的底层接口。

系统调用:用于访问设备驱动程序的底层函数:open read write close ioctl

3.库函数

针对输入输出操作直接使用底层系统调用的一个问题是他们的效率非常低。

二. 底层文件访问

3个已经打开的文件描述符:

0 标准输入

1 标准输出

2 标准错误

1.write

2.read

3.open

int open(const char *path, int oflags, mode_t mode)

oflags参数:

O_RDONLY 只读 O_WRONLY 只写 O_RDWR 读写方式

O_APPEND 写入数据追加到文件末尾 O_TRUNC 把文件长度设置为零,丢弃原来的内容

O_CREATE 按参数mode中给出的访问模式创建文件

O_EXCL 

使用O_CREATE标志还需要第三个参数:

S_IRUSR S_IWUSR S_IXUSR

S_IRGRP S_IWGRP S_IXGRP

S_IROTH S_IWOTH S_IXOTH

open调用时给出的mode值与当时的用户掩码的反值做AND操作。umask是一个系统变量,为文件的访问权限设定一个掩码。

4.close

三. 其他与文件管路有关的系统调用

1.lseek系统调用:用来设置文件的下一个读写位置,可以是某个绝对位置,也可以是相对于当前位置相对位置。

SEEK_SET offset是一个绝对位置

SEEK_CUR  offset是相对于当前位置的一个相对位置

SEEK_END offset是相对于文件尾的一个相对位置

2. fstat,stat和lstat系统调用

fstat返回与打开文件描述符相关的文件的状态信息。

stat和lstat是通过文件名查到的状态信息。区别:当文件是一个符号链接时,lstat返回的是该符号链接本身的信息而stat返回的是该链接指向的文件的信息。

3. dup和dup2系统调用

四. 标准I/O库

标准I/O 库为底层i/o系统调用提供了一个通用的接口。与底层文件描述符对应的是流,是指向结构FILE的指针。

1.fopen,fread,fwrite,fclose

2.fflush,fseek

3.fgetc,getc和getchar 读取一个字符

4.fgets,gets读取一个字符串

5.格式化输入输出

printf,fprintf和sprintf

scanf,fscanf和sscanf


0 0