Справочные страницы: как использовать аргументы

В конечном счете, я хочу знать, как использовать функцию, не ища пример в Интернете.

Например, если я сделаю man 2 mkfifo он отображает:

NAME
mkfifo -- make a fifo file

SYNOPSIS
#include <sys/types.h>
#include <sys/stat.h>

int
mkfifo(const char *path, mode_t mode);

DESCRIPTION
Mkfifo() creates a new fifo file with name path.  The access permissions are specified by mode and restricted by the umask(2) of the calling process.

The fifo's owner ID is set to the process's effective user ID.  The fifo's group ID is set to that of the parent directory in which it is created.

const char *path довольно понятен, и у меня не будет проблем с вызовом функции mkfifo с этим аргументом, но моя проблема больше связана с аргументом mode_t. Страницы руководства дают небольшое объяснение того, для чего предназначен режим, но не объясняют, как использовать его для вызова функции с ним.

Есть ли способ навигации по страницам руководства, чтобы понять такие аргументы?

Я пытался делать man mode_t, man mode и ничего не подошло.

3

Решение

Страница man предполагает некоторое знакомство с Другой места, где вы будете использовать флаг режима, когда он говорит:

Он изменяется с помощью umask процесса обычным способом: права доступа для создаваемого файла (режим & ~ Umask).

Однако, если вы перейдете на каждую из страниц в разделе «Смотрите также»:

СМОТРИТЕ ТАКЖЕ

mkfifo (1), close (2), open (2), read (2), stat (2), umask (2), write (2), mkfifoat (3), fifo (7)

в конечном итоге вы откроете (2), который дает исчерпывающий список режимов, которые вы можете использовать. Это страница руководства, которую вы посещаете man 2 open включает в себя (при описании флагов):

 O_CREAT
Если файл не существует, он будет создан. Владелец (идентификатор пользователя) файла устанавливается на эффективный идентификатор пользователя процесса. Принадлежность группы (идентификатор группы) задается либо для действующего идентификатора группы процесса, либо для идентификатора группы родительского каталога (в зависимости от типа файловой системы и параметров монтирования, а также режима родительского каталога, см. Параметры монтирования bsdgroups. и sysvgroups, описанные в mount (8)).

mode определяет разрешения для использования в случае создания нового файла. Этот аргумент должен быть указан, когда в флагах указан O_CREAT; если O_CREAT не указан, то режим игнорируется. Действующие разрешения изменяются с помощью umask процесса обычным способом: разрешения созданного файла: (режим & ~ Umask). Обратите внимание, что этот режим применяется только к будущему доступу к вновь созданному файлу; вызов open (), который создает файл только для чтения, вполне может вернуть дескриптор файла для чтения / записи.

Для режима предусмотрены следующие символические константы:…

Другой подход, который может оказаться полезным, — это поиск информации о включениях, указанных в справочной странице. Например, Google для sys/types.h или же sys/stat.h оказаться:

Я понимаю, что это не исключает необходимости «искать пример в Интернете». Некоторые системы могут включать справочные страницы для заголовков, но другие могут не включать.

1

Другие решения

То, что вы просили, уже существует, это команда info, Пытаться:

info mkfifo

Вы получите что-то вроде этого:

 -- Function: int mkfifo (const char *FILENAME, mode_t MODE)
The `mkfifo' function makes a FIFO special file with name
FILENAME.  The MODE argument is used to set the file's
permissions; see *note Setting Permissions::.

Если вы переместите курсор на *note Setting Permissions::. немного и нажмите ENTER, вы попадете в umask страница с довольно подробным описанием прав доступа к файлам.

Также, info может читать справочные страницы, когда доступны только справочные страницы для данной темы. Короче говоря, вам никогда не придется использовать man снова.

1

По вопросам рекламы [email protected]