标签:成功 计算 byte 进程 seek col 超过 字节 ssi
fcntl.h 头文件,file control的缩写。
open函数,openat函数:
int open(const char *path, int oflag); int openat(int fd, const char *path, int oflag);
将准备打开的文件或是设备的名字作为参数path传给函数,oflags用来指定文件访问模式。
两个系统调用成功返回一个新的文件描述符,失败返回-1。两个函数返回的文件描述符一定是最小的未用描述符数值。
creat函数:
int creat(const char *path, mode_t mode);
若成功,返回为只写打开的文件描述符;若出错,返回-1
close函数:
int close(int fd);
若成功返回0,若出错返回-1;
lseek函数:
off_t lseek(int fd, off_t offset, int whence);
若成功返回新的文件偏移量,若出错,返回为-1;
每个打开的文件都有一个与其相关联的“当前文件偏移量”,通常是一个非负整数。
用以度量从文件开始处计算的字节数。通常读写操作都从当前文件的偏移量处开始,并使偏移量增加所读写的字节数。
对参数offset的解释与参数whence有关:
若whence是SEEK_SET,则将该文件的偏移量设置为距文件开始处offset个字节;
若whence是SEEK_CUR,则将该文件的偏移量设置为其当前值加offset,offset可为正或负;
若whence是SEEK_END,则将该文件的偏移量设置为文件长度加offset,offset可正可负;
可用以下方式获取打开文件的偏移量:
off_t curpos;
curpos = lseek(fd, 0, SEEK_CUR);
read函数:
ssize_t read(int fd, void *buf, size_t nbytes);
调用read函数从打开文件中读数据;
返回值:读到的字节数,若已到文件尾,返回 0,若出错,返回-1;
write函数:
ssize_t write(int fd, const void *buf, size_t nbytes);
返回值:若成功,返回已写的字节数;若出错,返回-1;
其返回值通常与参数nbytes的值相同,否则表示出错。write出错的一个常见原因是:磁盘已写满,或者超过了一个给定的进程的文件长度限制。
对于普通文件,写操作从文件的当前偏移量处开始。如果在打开该文件时,指定了O_APPEND选项,则在每次写操作之前,将文件偏移量设置在文件的当前结尾处。在一次成功写之后,该文件偏移量增加实际写的字节数。
标签:成功 计算 byte 进程 seek col 超过 字节 ssi
原文地址:https://www.cnblogs.com/grooovvve/p/14106039.html