suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Linux – Ich schaue mir einige C-Funktionen an. Was bedeuten diese bitweisen ODERs?

Ich lerne kürzlich C und habe gesehen, dass einige Funktionen bitweise oder bitweise Parameterübergaben verwenden. Ich verstehe nicht ganz, was das bedeutet, und es scheint, dass bitweise Operationen in der täglichen Arbeit selten verwendet werden.

Zum Beispiel der folgende Codeabschnitt

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

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

Was bedeuten O_RDWR|O_CREAT und S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH hier?

仅有的幸福仅有的幸福2738 Tage vor668

Antworte allen(2)Ich werde antworten

  • 漂亮男人

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

    这个需要自己去查文档

    • O_RDWR: 可读可写

    • O_CREAT : 文件不存在则创建

    位或的意思是组合配置,假设(具体值我并不知道):
    O_RDWR 等于二进制 00000001
    O_CREAT 等于二进制 00000010

    那么组合出来的配置就是

    00000001  可读写
    00000010  创建
    --------  位或
    00000011  可读写+创建

    Antwort
    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

    等。

    Antwort
    0
  • StornierenAntwort