2016-04-01 1 views

ответ

1

страница руководства из shmget говорит:

В дополнение к указанным выше флагов, младшие 9 битов shmflg указать разрешения для владельца, группы и других. Эти биты имеют тот же формат и то же значение, что и аргумент режима open (2).

Так давайте проверить страницу руководства по открытой:

The following symbolic constants are provided for mode: 
- S_IRWXU 00700 user (file owner) has read, write, and execute permission 
- S_IRUSR 00400 user has read permission 
- S_IWUSR 00200 user has write permission 
- S_IXUSR 00100 user has execute permission 
- S_IRWXG 00070 group has read, write, and execute permission 
- S_IRGRP 00040 group has read permission 
- S_IWGRP 00020 group has write permission 
- S_IXGRP 00010 group has execute permission 
- S_IRWXO 00007 others have read, write, and execute permission 
- S_IROTH 00004 others have read permission 
- S_IWOTH 00002 others have write permission 
- S_IXOTH 00001 others have execute permission 

Целое значение кодируется как в двоичной, что соответствует флаги , то есть S_IRUSR|S_IWUSR :

  • пользователь h как разрешение записи
  • пользователя разрешения на чтение

Кто писал, что часть коды избавлена ​​2 минуты своей жизни и потратила гораздо больше времени жизни многих других, включая меня.

Поздравления. :)


редактировать: благодаря @Fabio Туратите за указание главной ошибки;)

+1

Вы уверены, 101111110 соответствует флагам 374? Я бы сказал, что это 576. То есть: пользователь читал и выполнял, группа читала, записывала и выполняла, а другие читали и записывали. И еще до этого: вы уверены, что 384 закодировано так, как в двоичном? Разве это не должно быть 110000000? То есть пользователь читает и пишет, а у всех остальных ничего нет? Ваш номер, 101111110, на самом деле является двоичной кодировкой 382, ​​а не 384. Можете ли вы проверить? –

+0

@FabioTurati Я ошибся исходным номером на питоне, и оттуда все пошло вниз. Спасибо за указание на ошибку :) –

+0

Добро пожаловать. Хороший ответ, кстати! –