我目前正在为一个项目开发一个自定义内核,我需要做的事情之一是创建一个新的自定义文件标志,类似于下面的问题:Passing custom flags to "open" in a device driver
我已经能够创建它们,并且编译内核没有任何问题,然而,我并不真正了解这些标志在实践中是如何工作的。它们中的大多数似乎彼此冲突,例如:
[DEC] [BIN]
O_CREAT: 00000100 | 01100100
O_EXCL: 00000200 | 11001000
-x------
正如在那个问题中指出的,为了测试标志是否唯一,它使用所有标志的汉明权重,然而,我不完全理解如何设置和取消设置单个标志,以及如何正确地测试它们,为什么不使用一些更微不足道的东西,如位标志,它可以通过简单、廉价的按位操作很容易地区分。
1条答案
按热度按时间toiithl61#
在C语言中,以0开头的数字是八进制的。
例如,00000100是以8为基数的八进制数,而不是十进制数,也就是以2为基数的二进制数0b1000000。
它们不冲突并且是唯一的位。