Linux内核-Linux文件标志是如何工作的?

lnxxn5zx  于 2023-02-03  发布在  Linux
关注(0)|答案(1)|浏览(120)

我目前正在为一个项目开发一个自定义内核,我需要做的事情之一是创建一个新的自定义文件标志,类似于下面的问题:Passing custom flags to "open" in a device driver
我已经能够创建它们,并且编译内核没有任何问题,然而,我并不真正了解这些标志在实践中是如何工作的。它们中的大多数似乎彼此冲突,例如:

[DEC]      [BIN]
O_CREAT:    00000100 | 01100100
O_EXCL:     00000200 | 11001000
                       -x------

正如在那个问题中指出的,为了测试标志是否唯一,它使用所有标志的汉明权重,然而,我不完全理解如何设置和取消设置单个标志,以及如何正确地测试它们,为什么不使用一些更微不足道的东西,如位标志,它可以通过简单、廉价的按位操作很容易地区分。

toiithl6

toiithl61#

在C语言中,以0开头的数字是八进制的。
例如,00000100是以8为基数的八进制数,而不是十进制数,也就是以2为基数的二进制数0b1000000。
它们不冲突并且是唯一的位。

[OCT]      [BIN]
O_CREAT:    00000100 | 01000000
O_EXCL:     00000200 | 10000000

相关问题