Семантика S_IRUSR в POSIX

Я изучаю API POSIX, и я не понимаю логику позади некоторых имен.

например. S_IRUSR, S_IRUSR

Что делает то, Что делает S поддержать? Я получаю этоR и W для чтения и записи. Но что соглашение о присвоении имен, сопровождаемое POSIX? Точно так же, как Win32 следует за Венгерской записью для именования, за чем POSIX следует для их именования? Для стандартов как POSIX должна быть документация для него...

6
задан TylerH 9 November 2016 в 16:39
поделиться

3 ответа

Ведущий S_ просто для определить, с какой структурой / функцией связана константа.

Из , константы S_IRUSR , S_IWUSR и т. Д. Являются возможными значениями для элемента st_mode для struct stat (используется в stat () и др.). Все члены структуры struct stat начинаются с префикса st_ , и есть несколько макросов, связанных с stat , которые также начинаются с S_ . Соглашение предназначено только для упрощения сопоставления имен структур, имен членов и констант.

3
ответ дан 9 December 2019 в 20:43
поделиться

ALOK верно. См. Спецификация для Sys / stat.h . Если бы вы написали свой собственный статус () / statvfs () () (очень распространенные в портах, которые делают программы не POSIX работают на хостах POSIX), вы префисеруете его с чем-то другим, то есть Z_IRUSR.

Пока у меня нет, у меня нет списка, я вполне уверен, что некоторые реализованные реализации предоставляют несколько вариантов для SYS / STAT, S_, давая вам типичное поведение POSIX и (X), давая вам что-то еще. Однако я не видел, что в течение длительного времени, поэтому я не могу вновь вспомнить, где я бежал в него.

1
ответ дан 9 December 2019 в 20:43
поделиться

Я не уверен, имеют ли они какое-либо значение, кроме того, что они находятся в sys / stat.h , поэтому S может расшифровывается как "stat".

Я попытался провести детективную работу, например, в записи IEEE Std 1003.1, издание 2004 г. для sys / stat.h говорится следующее: Впервые выпущено в выпуске 1. Получено из Выпуск 1 SVID.

Затем Спецификации разработчика для двоичного интерфейса приложения System V (см. Том 1a [pdf]), стр. 95, и даже имена, начинающиеся с S_ . Я не мог вернуться дальше этого.

О вашем вопросе в целом: многое из этого уже история. Например, creat () находится в POSIX, но имя взято из истории . Многие имена (и поведение) функций POSIX взяты из стандарта C.Фактически, их описание обычно содержит текст вроде :

Функциональные возможности, описанные на этой справочной странице, согласованы со стандартом ISO C.Любое противоречие между описанными здесь требованиями и стандартом ISO C является непреднамеренным. Этот том IEEE Std 1003.1-2001 соответствует стандарту ISO C.

Я думаю, что единственный способ найти какую-либо логику POSIX API - это прочитать историю Unix.

Следующее может помочь:

8
ответ дан 9 December 2019 в 20:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: