前言:本编是C系列基础语言最后一篇。开心中。。。
1.文件描述符
2.低级IO(read、write)
读函数read
ssize_t read(int fd,void *buf,size_t nbyte)
read函数是负责从fd中读取内容.成功时,read返回实际所读的字节数,如果返回的值是0,表示已经读到文件的结束了.
小于0表示出现了错误.如果错误为EINTR说明读是由中断引起的, 如果是ECONNREST表示网络连接出了问题.
写函数write
ssize_t write(int fd,const void *buf,size_t nbytes)
write函数将buf中的nbytes字节内容写入文件描述符fd.成功时返回写的字节数.失败时返回-1. 并设置errno变量. 在网络程序中,当我们向套接字文件描述符写时有俩种可能.
1)write的返回值大于0,表示写了部分或者是全部的数据.
2)返回的值小于0,此时出现了错误.我们要根据错误类型来处理. 如果错误为EINTR表示在写的时候出现了中断错误.
如果为EPIPE表示网络连接出现了问题(对方已经关闭了连接).
1)write的返回值大于0,表示写了部分或者是全部的数据.
2)返回的值小于0,此时出现了错误.我们要根据错误类型来处理. 如果错误为EINTR表示在写的时候出现了中断错误.
如果为EPIPE表示网络连接出现了问题(对方已经关闭了连接).
3.随机访问
4.(open、creat、close、unlink)
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); 返回值:成功返回新分配的文件描述符,出错返回-1并设置errno 在Man Page中open 函数有两种形式,一种带两个参数,一种带三个参数,其实在C代码 中open 函数是这样声明的: int open(const char *pathname, int flags, ...); 最后的可变参数可以是0个或1个,由flags 参数中的标志位决定,见下面的详细说明。 pathname 参数是要打开或创建的文件名,和fopen 一样,pathname 既可以是相对路径也可以是绝 对路径。flags 参数有一系列常数值可供选择,可以同时选择多个常数用按位或运算符连接起 来,所以这些常数的宏定义都以O_开头,表示or。 必选项:以下三个常数中必须指定一个,且仅允许指定一个。 O_RDONLY 只读打开 O_WRONLY 只写打开 O_RDWR 可读可写打开 以下可选项可以同时指定0个或多个,和必选项按位或起来作为flags 参数。可选项有很多,这 里只介绍一部分,其它选项可参考open(2)的Man Page: O_APPEND 表示追加。如果文件已有内容,这次打开文件所写的数据附加到文件的末尾而不 覆盖原来的内容。 O_CREAT 若此文件不存在则创建它。使用此选项时需要提供第三个参数mode ,表示该文件 的访问权限。 O_EXCL 如果同时指定了O_CREAT,并且文件已存在,则出错返回。 O_TRUNC 如果文件已存在,并且以只写或可读可写方式打开,则将其长度截断 (Truncate)为0字节。 O_NONBLOCK 对于设备文件,以O_NONBLOCK 方式打开可以做非阻塞I/O(Nonblock I/O).
C系列最后一篇博客相对来说比较简单,C系列基础到此结束。下篇进入C++系列基础学习了。