系统IO:比较多用来控制底层
1,open:
打开一个文件,返回一个文件描述符(钥匙)
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
int creat(const char *pathname, mode_t mode);
pathname:打开文件的路径
flags:如何操作文件
O_APPEND:追加的形式去打开文件(文件操作位置定位到文件的最末开始操作数据)
O_CREAT:创建文件,结合mode值使用(最后文件产生的权限通过mode&~umask得出)
文件不存在时创建,存在则忽略这个设置
O_EXCL:结合创建文件使用,如果文件存在则open函数返回失败(-1)
O_NONBLOCK:不阻塞的操作文件
O_SYNC:直接操作数据块(同步更新数据块)
O_TRUNC:将打开的文件清零
mode:权限设置值(八进制数),决定创建文件的权限
返回值:
成功返回一个大于或等于0的数字(文件描述符),失败则返回-1,并且将错误信息置位到errno这个变量中
ps:1,open函数一般返回值是大于2的值:
0:系统标准输入
1:系统标准输出
2:系统标准出错
2,open函数默认打开的文件都是将操作位置定位在文件开头,如果你想后面添加,需要加上追加模式(O_APPEND)
2,errno:
这是一个系统的错误全局变量,如果系统调用当中出错了,内部会自动往里面置一个错误的数字,你可以通过perror,strerror获取错误的信息
3,close:关闭一个文件描述符
#include <unistd.h>
int close(int fd);
fd:想要关闭的文件描述符
返回值:成功返回0,失败返回-1
4,read:读取指定文件的内容
#include <unistd.h>
ssize_t read(int fd, void *buf, size_t count);
fd:想读取那个文件的数据
buf:将数据读取到哪里去
count:想要读取多大,以字节为单位
返回值:成功返回一个大于或等于0的数字,代表成功读取了几个字节,如果等于0,证明读取到了文件的底部,失败则返回-1
5,write:写入内容到指定的文件当中
#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t count);
fd:想写入哪个文件
buf:想要写入的数据存放在哪
count:想要写入多大的数据,以字节为单位
返回值:成功返回一个大于或等于0的数字,代表成功写入了几个字节,如果等于0,证明没有成功将数据写入,失败则返回-1
6,lseek:重置文件操作位置
#include <sys/types.h>
#include <unistd.h>
off_t lseek(int fd, off_t offset, int whence);
fd:重置那个文件
offset:偏移多少个字节
whence:从哪里开始偏移
返回值:成功返回从文件开头到你重新定位之后的位置,失败返回-1
1,open:
打开一个文件,返回一个文件描述符(钥匙)
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
int creat(const char *pathname, mode_t mode);
pathname:打开文件的路径
flags:如何操作文件
O_APPEND:追加的形式去打开文件(文件操作位置定位到文件的最末开始操作数据)
O_CREAT:创建文件,结合mode值使用(最后文件产生的权限通过mode&~umask得出)
文件不存在时创建,存在则忽略这个设置
O_EXCL:结合创建文件使用,如果文件存在则open函数返回失败(-1)
O_NONBLOCK:不阻塞的操作文件
O_SYNC:直接操作数据块(同步更新数据块)
O_TRUNC:将打开的文件清零
mode:权限设置值(八进制数),决定创建文件的权限
返回值:
成功返回一个大于或等于0的数字(文件描述符),失败则返回-1,并且将错误信息置位到errno这个变量中
ps:1,open函数一般返回值是大于2的值:
0:系统标准输入
1:系统标准输出
2:系统标准出错
2,open函数默认打开的文件都是将操作位置定位在文件开头,如果你想后面添加,需要加上追加模式(O_APPEND)
2,errno:
这是一个系统的错误全局变量,如果系统调用当中出错了,内部会自动往里面置一个错误的数字,你可以通过perror,strerror获取错误的信息
3,close:关闭一个文件描述符
#include <unistd.h>
int close(int fd);
fd:想要关闭的文件描述符
返回值:成功返回0,失败返回-1
4,read:读取指定文件的内容
#include <unistd.h>
ssize_t read(int fd, void *buf, size_t count);
fd:想读取那个文件的数据
buf:将数据读取到哪里去
count:想要读取多大,以字节为单位
返回值:成功返回一个大于或等于0的数字,代表成功读取了几个字节,如果等于0,证明读取到了文件的底部,失败则返回-1
5,write:写入内容到指定的文件当中
#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t count);
fd:想写入哪个文件
buf:想要写入的数据存放在哪
count:想要写入多大的数据,以字节为单位
返回值:成功返回一个大于或等于0的数字,代表成功写入了几个字节,如果等于0,证明没有成功将数据写入,失败则返回-1
6,lseek:重置文件操作位置
#include <sys/types.h>
#include <unistd.h>
off_t lseek(int fd, off_t offset, int whence);
fd:重置那个文件
offset:偏移多少个字节
whence:从哪里开始偏移
返回值:成功返回从文件开头到你重新定位之后的位置,失败返回-1