+ -
当前位置:首页 → 问答吧 → 求解一段程序

求解一段程序

时间:2010-08-11

来源:互联网

#include "apue.h"
#include <fcntl.h>

void
set_fl(int fd, int flags) /* flags are file status flags to turn on */
{
        int             val;

        if ((val = fcntl(fd, F_GETFL, 0)) < 0)
                err_sys("fcntl F_GETFL error");

        val |= flags;           /* turn on flags 这一句是什么意思?*/

        if (fcntl(fd, F_SETFL, val) < 0)
                err_sys("fcntl F_SETFL error");
}

这段程序里面中间那句val |= flags作何解?逻辑上val = val | flags 代表什么意义?请教指点迷津

作者: blackgenius   发布时间: 2010-08-11

解释的很清楚呀 flags是一个状态 标志位;
val |= flags;--就是把指定的标志位设置为1;
比如 flags = 0x4;-----就是设置第2bit位为true;
往往每个bit都有自己的含义~~~~~

对应的就是val &= flags; 取消设置的比特位,比如flags=0xfffffb; 就是设置第2bit为0,当然其它bit保持不变----

一个4字节的数据32个bit,你逻辑上每个bit代表一个意思,那么就会有设置和清除对应bit的操作~~~

作者: zbhddt6   发布时间: 2010-08-11

LS正解。
首先获取描述符的状态标记
补上我们自己的状态标记
在将其设置到描述符上

作者: lenky0401   发布时间: 2010-08-11