我正在尝试了解文件描述符的标志和模式。
[The man page for
fcntl - manipulate file descriptor
int fcntl(int fd, int cmd);
状态:
”和“ status flags >>”。该手册页还提到,当文件描述符标志
以下命令操纵与文件关联的标志描述符。当前,仅定义了一个这样的标志:FD_CLOEXEC,...
文件状态标志
每个打开的文件描述都有某些相关的状态标志,由open(2)初始化...文件状态标志及其语义在open(2)中描述。
鉴于
fcntl
完全指代文件描述符(不处理流),我想第二个标题应该是“文件描述符状态标志”。因此,现在我们有了一个FD“ flags
cmd=F_GETFL
时,fcntl
的返回值为“ 文件访问模式和文件状态标志”。所以现在我们还有一个文件访问模式。现在在man page for open
中有flags和modes
”,“ 文件访问模式”和“ 模式”(我想确认后两个相同)。首先,1。我不知道这三个类别之间的区别。open
因此,对于每个文件描述符,现在都有“ 标志
”,“ 状态标志
遍历两个引用的手册页,我收集了一个“实体”列表(下面,按照出现的顺序,有些重复了)。2。我不知道每个类别属于哪个类别。
int open(const char *pathname, int flags, mode_t mode);
我找不到一个简单的列表告诉“ X,Y,Z是标志,W,V是模式,等等。”也许它们是可以互换使用的术语,或者mode
是flags或...的子集相关:
FD_CLOEXEC, O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND, O_ASYNC, O_DIRECT, O_NOATIME, O_NONBLOCK, O_DSYNC, O_SYNC, O_CLOEXEC
O_CREAT, O_DIRECTORY, O_EXCL, O_NOCTTY, O_NOFOLLOW, O_TMPFILE, O_TRUNC, O_LARGEFILE, O_NDELAY, O_PATH
(答案可能与当前操作指南相同,即使不一致)。
Difference between "file pointer", "stream", "file descriptor" and ... "file"?
How to make sense of O_RDONLY = 0?
Difference between "file pointer", "stream", "file descriptor" and ... "file"?
How to get the mode of a file descriptor?
https://www.gnu.org/software/libc/manual/html_node/Access-Modes.html
我正在尝试了解文件描述符的标志和模式。 fcntl的手册页-操作文件描述符int fcntl(int fd,int cmd);状态:文件描述符标志以下...
文件描述符可以重复。例如,当进程https://www.gnu.org/software/libc/manual/html_node/File-Status-Flags.html#File-Status-Flags时,它将获得其父级不受影响的自己的FD集,并且fork
系统调用可用于显式复制单个FD。
当文件描述符重复时,每个描述符都有其自己的文件描述符标志集,但是它们都将共享相同的文件状态标志。例如,考虑以下代码:
我将通过Joseph Sible-Reinstate Monica]总结说明,并在手册页上可能引起混淆的措词上加点说明,这可能是OP的原因。