C程序设计语言- UNIX系统接口-7.1----文件描述符、低级IO(read、write)、随机访问、(open、creat、close、unlink)

来源:互联网 发布:方正综艺简体 mac 编辑:程序博客网 时间:2024/05/16 01:46

前言:本编是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表示网络连接出现了问题(对方已经关闭了连接).

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++系列基础学习了。

1 0