计算具体文件类型的 bit 这里问题

计算具体文件类型的 bit 这里问题

https://img1.sycdn.imooc.com/climg/65b6776209d4f9f505580609.jpg
这里的 mode 和 S_IFMT 分别是是?
是如何进入到每一个 case 里面的?


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
无__名 2024-01-29 11:31:47

mode 值是 struct stat 结构体的 st_mode 成员的值,这个 mode 成员主要包含3个方面的信息

  1. [12:15] bit :  表示文件类型

  2. [9:11] bit : 表示文件访问权限控制

  3. [0:8] bit : 表示文件访问权限

S_IFMT : 文件类型屏蔽字,通过与屏蔽字进行 & 操作来判断[12:15] 哪些位为1 最后得到的值 在与 文件类型的值进行匹配

S_IFMT        = 0170000   (文件类型屏蔽字)

S_IFIFO       = 0010000  (管道或FIFO)

S_IFCHR    = 0020000  (字符特殊文件)

S_IFDIR      = 0040000  (目录文件)

S_IFBLK     = 0060000  (块特殊文件)

S_IFREG    = 0100000  (普通文件)

S_IFLNK    = 0120000  (链接文件)

S_IFSOCK = 0140000  (套接字)


st_mode 成员的值是通过stat  函数获取信息之后填进去,在保存到 struct stat 结构体中的


  • 提问者 rootaaaaaaaaaaaaa #1
    1. [12:15] bit :  表示文件类型
      其中[12:15] 是什么 意思? 按位与 不是二进制的吗?这个转化成二进制是多少?

    2024-01-29 22:59:25
  • 提问者 rootaaaaaaaaaaaaa #2

    https://img1.sycdn.imooc.com/climg/65b7c15409064eec18000795.jpg我打印了按位与的结果 以 S_IDDIR 位列 这里的结果是16384 
    但是 您说 S_IFDIR      = 0040000  (目录文件)
    现在并没有对上 是什么原因呀?老师

    2024-01-29 23:17:55
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师