Linux中一切都是文件。如普通文件,目录,设备,管道等。
操作这些文件有两种方式,调用系统函数和使用标准I/O库。
一、调用系统函数
1.文件描述符:数值类型,表示打开的文件标识
程序运行时,会首先打开3个文件描述符,0(标准输入文件),1(标准输出文件),2(标准错误文件)
2.系统调用常用函数
1)open函数:打开文件
原型为:
int open(const char *path,int oflags) int open(const char *path,int oflags,mode_t mode)
path:完整的文件路径
oflags:文件访问模式(只读,只写,可读写)
mode:设定文件访问权限
返回值:返回与文件关联的文件描述符,失败返回-1
注意这个描述符是唯一的,不与其他进程共享,文件对应的文件描述符并不是固定的。
2)write函数:写入文件
原型为:
size_t write(int fildes,const void *buf,size_t nbytes);
将buf缓冲区的前nbyts个字节,写入文件描述符files关联的文件中。
返回值:实际写入的字节数,失败返回-1
3)read函数:读取文件
原型为:
size_t read(int fildes,void *buf,szie_t nbytes);
读取文件描述符fildes关联的文件中前nbytes个字节,到buf缓冲区
返回值:实际读取的字节数,失败返回-1
4)close函数:关闭文件
原型为:
int close(int fildes);
返回值:成功返回0,失败返回-1
3.调用系统函数示例
从一个文件中复制数据到另一个文件,代码如下:
copy.c
#include<fcntl.h> #include<stdlib.h> int main() { char c='