文件描述符的说明

问题描述 投票:0回答:2

我正在尝试了解文件描述符的标志和模式。

[The man page for

fcntl - manipulate file descriptor

int fcntl(int fd, int cmd);

状态:

文件描述符标志

以下命令操纵与文件关联的标志描述符。当前,仅定义了一个这样的标志:FD_CLOEXEC,...

文件状态标志

每个打开的文件描述都有某些相关的状态标志,由open(2)初始化...文件状态标志及其语义在open(2)中描述。

鉴于fcntl完全指代文件描述符(不处理流),我想第二个标题应该是“文件描述符状态标志”。因此,现在我们有了一个FD“ flags

”和“ status flags >>”。该手册页还提到,当cmd=F_GETFL时,fcntl的返回值为“ 文件访问模式文件状态标志”。所以现在我们还有一个文件访问模式

现在在man page for open中有flagsmodes

,就好像它们是两个不同的项目。甚至有一个原型可以使差异变得明显]
open

因此,对于每个文件描述符,现在都有“ 标志

”,“ 状态标志
”,“ 文件访问模式”和“ 模式”(我想确认后两个相同)。首先,1。我不知道这三个类别之间的区别。

遍历两个引用的手册页,我收集了一个“实体”列表(下面,按照出现的顺序,有些重复了)。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);状态:文件描述符标志以下...

file-descriptor file-access
2个回答
1
投票

文件描述符可以重复。例如,当进程https://www.gnu.org/software/libc/manual/html_node/File-Status-Flags.html#File-Status-Flags时,它将获得其父级不受影响的自己的FD集,并且fork系统调用可用于显式复制单个FD。

当文件描述符重复时,每个描述符都有其自己的文件描述符标志集,但是它们都将共享相同的文件状态标志。例如,考虑以下代码:


0
投票

我将通过Joseph Sible-Reinstate Monica]总结说明,并在手册页上可能引起混淆的措词上加点说明,这可能是OP的原因。

© www.soinside.com 2019 - 2024. All rights reserved.