掩码
- 掩码:本质就是一串二进制数字,可以通过与目标数字的按位操作,实现屏蔽指定位。
- 示例:目标数字为10100111,需求是将该数字的第0到第2位清零(右边第一位为0)。
- 先创建一个掩码:00000111
- 将掩码取反然后与目标数字进行按位与运算。
11111000 & 10100111 ==> 10100000
- 应用:掩码应用广泛,远不止这些。以下是一些应用例子。
umask
- 解释:get or set the file mode creation mask。顾名思义,umask也是一个掩码,会对创建的文件或者目录的权限位产生影响。
- umask的查看与修改:
- 查看:使用
umask
或者umask -S
命令或者使用库函数umask
- 修改:使用
umask mode
可以临时修改,如果需要永久修改则需要更改配置文件的值;或者使用库函数umask
信号掩码
- 在进程执行期间,内核会为每个进程维护一个信号掩码。为了屏蔽某些信号,防止某些信号递送给进程,需要将需要屏蔽的信号加入到信号掩码中。
示例
- 当前系统umask值为0022。用户欲创建一个test.txt文件,文件的权限位指定为666,最终test.txt文件的权限位为644。即666 & ~022
#include <unistd.h>
#include <fcntl.h>
int main() {
int fd = open("test.txt", O_CREAT, 0666, "test");
close(fd);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)