open+errno+write+lseek

来源:互联网 发布:python 发送邮件附件 编辑:程序博客网 时间:2024/06/05 09:34
系统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






0 0
原创粉丝点击