3

最终,我希望能够知道如何使用函数,而不必在网上查找示例。

例如,如果我这样做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_tman mode没有任何结果。

4

2 回答 2

1

手册页假设您熟悉其他地方,当它说:

它由进程的umask以通常的方式修改:创建文件的权限为(mode & ~umask)。

但是,如果您浏览“另请参阅”部分中的每一页:

也可以看看

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

您最终将进入 open(2),它提供了您可以使用的模式的详尽列表。也就是说,您访问的手册页man 2 open包括(在描述标志时):

 O_CREAT 如果文件不存在,它将被创建。文件的所有者(用户 ID)设置为进程的有效用户 ID。组所有权(组 ID)设置为进程的有效组 ID 或父目录的组 ID(取决于文件系统类型和挂载选项,以及父目录的模式,请参阅挂载选项 bsdgroups和 mount(8) 中描述的 sysvgroups)。

mode 指定在创建新文件时使用的权限。在标志中指定 O_CREAT 时必须提供此参数;如果未指定 O_CREAT,则忽略模式。有效权限由进程的umask以通常的方式修改:创建文件的权限是(mode & ~umask)。请注意,此模式仅适用于以后对新创建文件的访问;创建只读文件的 open() 调用很可能会返回读/写文件描述符。

为模式提供了以下符号常量:……</p>

您可能会发现有用的另一种方法是搜索有关手册页指定的包含的信息。例如,谷歌搜索sys/types.hsys/stat.h出现:

我意识到这并不排除必须“在线查找示例”。一些系统可能包含标题的手册页,但其他系统可能不包含。

于 2013-09-19T19:57:23.700 回答
1

您要求的已经存在,它是 command 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再次使用。

于 2013-09-19T20:16:30.640 回答