完整包含linux下文件和目录的各种操作和注意事项,是此类开发的必备手册!
int open(const char *pathname, int flags, mode_t mode); open()函数为变参函数。
2.3.2.2 功能介绍
按照指定名称和权限,打开或创建对应的文件。 2.3.2.3 参数介绍
pathname
表示要打开的文件名(包含路径名称,缺省是认为在当前路径下面)。 flags
表示打开文件的方式。
mode
mode只有在创建文件时有效,用于指定文件的访问权限。
完整包含linux下文件和目录的各种操作和注意事项,是此类开发的必备手册!
除了可以通过上述宏进行“或”逻辑产生标志以外,我们也可以自己用数字来表示,Linux总共用5个数字来表示文件的各种权限:第一位表示设置用户ID;第二位表示设置组ID;第三位表示用户自己的权限位;第四位表示组的权限;最后一位表示其他人的权限。每个数字可以取1(执行权限)、2(写权限)、4(读权限)、0(无)或者是这些值的和。例如,要创建一个用户可读、可写、可执行,但是组没有权限,其他人可以读、可以执行的文件,并设置用户ID位。那么,我们应该使用的模式是1(设置用户ID)、0(不设置组ID)、7(1+2+4,读、写、执行)、0(没有权限)、5(1+4,读、执行)即10705:
open("test", O_CREAT, 10705);
以上语句相当于:
open("test", O_CREAT, S_IRWXU | S_IROTH | S_IXOTH | S_ISUID );
2.3.2.4 返回值
成功:返回一个文件描述符。
失败:返回-1, 错误由errno指示。错误信息可通过strerror(errno)进行查看。 2.3.2.5 注意事项 2.3.2.6 使用示例
2.3.3 close
用于关闭由creat()或open()打开的文件。 2.3.4 read 2.3.4.1 函数原型
函数原型如下:
ssize_t read(int fd, void *buf, size_t count);
2.3.4.2 功能介绍
函数read()实现从文件描述符fd所指定的文件中读取length个字节到buf所指向的缓冲区中,返回值为实际读取的字节数。 2.3.4.3 参数介绍
fd
文件描述符,通过creat()或open()获取。 buf
指向缓冲区的指针。 count
缓冲区的长度,单位为字节。
2.3.4.4 返回值
成功:返回读取的字节数。
完整包含linux下文件和目录的各种操作和注意事项,是此类开发的必备手册!
失败:返回-1并设置errno。错误信息可通过strerror(errno)进行查看。 到达文件末尾:如果在调read之前已到达文件末尾,则这次read返回0。 2.3.4.5 注意事项 2.3.4.6 使用示例
2.3.5 write 2.3.5.1 函数原型
函数原型如下:
ssize_t write(int fd, const void *buf, size_t count);
2.3.5.2 功能介绍
函数write实现将把length个字节从buf指向的缓冲区中写到文件描述符fd所指向的文件中,返回值为实际写入的字节数。 2.3.5.3 参数介绍
fd
文件描述符,通过creat()或open()获取。 buf
指向缓冲区的指针。 count
缓冲区的长度,单位为字节。
2.3.5.4 返回值
成功:返回读取的字节数。
失败:返回-1并设置errno。错误信息可通过strerror(errno)进行查看。 2.3.5.5 注意事项 2.3.5.6 使用示例
2.3.6 lseek 2.3.6.1 函数原型
函数原型如下:
off_t lseek(int fd, off_t offset, int whence);
2.3.6.2 功能介绍
lseek()将文件读写指针相对whence移动offset个字节。操作成功时,返回文件指针相对于文件头的位置。 2.3.6.3 参数介绍
fd
文件描述符。 offset
表示偏移量。offset可取负值,例如下述调用可将文件指针相对当前位置向前移