0

我今天开始学习命名管道。我读到要创建新的命名管道,我必须使用这个函数:mkfifo (const char* nom, **mode_t mode**);

例子:

if (mkfifo(("essai.fifo"), **0760**) == -1)
{

fprintf(stderr, "Can't create it");

exit(EXIT_FAILURE);

}

我的问题是为什么在第二个参数中我们以“ 0 ”(0 760)开头我知道 7 将所有权限授予所有者 6 表示组可以读写而另一个没有任何权限

4

3 回答 3

2

760是小数(以 10 为底)

0760[前导 0] 是八进制数(以 8 为基数)

0x0760[前导 0x] 是一个十六进制数(以 16 为基数)

前导 0 实际上不是数字的一部分,只是表明它是八进制而不是十进制。

于 2016-04-24T02:06:14.967 回答
0

正如 John3136 指出的那样,前导的“0”表示后面的“数字”(760)是八进制的,正如您指出的那样,新管道的权限位因此对于所有者、组和其他所有人来说都是 rwxrw----。

于 2016-04-24T02:23:29.823 回答
-2

第一位(0760的'0')表示权限,包括set-user-ID on execute bit、set-group-ID on execute bit和sticky bit

于 2016-04-24T02:22:09.230 回答