Linux 文件和目录操作函数(6)

发布时间:2021-06-06

完整包含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可取负值,例如下述调用可将文件指针相对当前位置向前移

Linux 文件和目录操作函数(6).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219