文件IO

文件IO
1.1:文件的类型
普通文件 : - :保存数据,程序等,分为二进制文件与文本文件
链接文件 : l ;
目录文件 : d :目录文件只允许系统进行修改
套接字文件 : s :用于不同计算机进程间通信
管道文件 : p :用于进程间传递数据,是进程间的通信机制
设备文件 : 用以操作系统与设备提供链接的文件

文件访问权限 ls -l
1.2:文件描述符
linux内核利用文件描述符来访问文件,其为非负整数,当打开或创建一个文件,返回一个文件描述符。
POSIX(可移植操作系统接口)定义三个文件描述符。STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO来代替数字0、1、2.
一般,每个进程最多可打开文件为64个。
1.3:文件重定向
在端口中执行命令,默认输出在端口上,可以通过文件重定向把输入输出内容保存在某个文件上。
1.4:文件IO的函数操作
1.4.1:创建及打开一个文件
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>

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

参数二:代表打开的模式{
O_RDONLY:只读打开
O_WRONLY:只写打开
O_RDWR :可读写
O_CREAT :没有文件则创建
O_TRUNC :文件存在,且不以读写模式打开,文件长度截为0
O_EXCL :文件已经创建,使用O_CREAT时,显示错误
O_APPEND:操作在文件末尾。
......
}
参数mode:只在创建文件时候使用,用来指定文件的权限
{
S_IRWXU=S_IRUSR|S_IWUSR|S_IXUSR //在fcntl.h中定义了S_IRWXU等三个
S_IRWXG=S_IRGRP|S_IWGRP|S_IXGRP
S_IRWXO=S_IROTH|S_IWOTH|S_IXOTH
}
成功返回文件描述符,文件描述符一定是最小的未被使用的值,出错返回-1

int creat(char* pathname,mode_t mode)
创建一个以只写方式打开的文件描述符。
creat等价于 open(char* pathname,O_WRONLY|O_CREAT|O_TRUNC,mode_t mode)
1.4.2关闭文件
#include<unistd.h>
int close(int fd)
成功为0,出错为-1

1.4.3文件的定位
#include<sys/types.h>
#icnlude<unistd.h>
off_t lseek(int fd,off_t offset,int whence)
返回新的文件偏移量(long整形),出错为-1
第一参数为对应文件的文件描述符,第二个参数是文件文件位移量(以字节为单位,可负)
第三个参数表示文件位置:SEEK_SET、SEEK_CUR、SEEK_END。
eg:{ lseek(fd,0,SEEK_CUR)
lseek(fd,0,SEEK_SET)
lseek(fd,0,SEEK_END)
}

1.4.4文件的读写
#include<unistd.h>
size_t read(int fd,void *buf,size_t size)
成功返回读取的字节数,到文件末尾返回0,错误为-1
size_t write(int fd,void *buf,size_t size)
成功返回写的字节数,失败为-1。

1.4.5文件属性操作
#include<sys/typs.h>
#include<sys/stat.h>
int chmod(char* pathname,mode_t mode)
int fchmod(int fd,mode_t mode)

#include<stdio.h>
int rename(char *oldname,char* newname)

posted @ 2016-10-08 16:46  胡杨秋色  阅读(52)  评论(0)    收藏  举报