搜尋

首頁  >  問答  >  主體

linux - 我在看一些C的函數中,這些位元或是什麼意思呢?

小弟最近在學C,看到一些函數的傳參 是用按位或傳參的 不太明白到底是啥意思,而且 關於位運算 好像平時工作中也很少用到。

比如說下面的一段程式碼

#define LOCKFILE "/var/run/gwyydaemon.pid"

#define LOCKMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)
 fd = open(LOCKFILE,O_RDWR|O_CREAT,LOCKMODE);

這裡面的 O_RDWR|O_CREAT 還有 S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH 是什麼意思呢

仅有的幸福仅有的幸福2756 天前684

全部回覆(2)我來回復

  • 漂亮男人

    漂亮男人2017-05-16 13:31:54

    這個需要自己去查文檔

    • O_RDWR: 可讀可寫

    • O_CREAT : 檔案不存在則建立

    位元或的意思是組合配置,假設(具體值我並不知道):
    O_RDWR 等于二进制 00000001
    O_CREAT 等于二进制 00000010 等於二進位00000001

    O_CREAT 等於二進位00000010

    那麼組合出來的配置就是🎜
    00000001  可读写
    00000010  创建
    --------  位或
    00000011  可读写+创建

    回覆
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-16 13:31:54

    就是位運算啊
    S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH 等等應該在某頭文件中定義了
    比如 (值是我隨便寫的,具體請查看那個頭文件,我偷個懶)

    #define S_IROTH 0x01
    #define S_IRGRP 0x02
    #define S_IWUSR 0x04
    #define S_IRUSR 0x08

    等。

    回覆
    0
  • 取消回覆