C++ 手册页:如何使用参数

C++ 手册页:如何使用参数,c++,c,manpage,C++,C,Manpage,最终,我希望能够知道如何使用函数,而不必在线查找示例 例如,如果我执行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()

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

例如,如果我执行
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.
名称
mkfifo——生成一个fifo文件
提要
#包括
#包括
int
mkfifo(常量字符*路径,模式_t模式);
描述
Mkfifo()创建一个名为path的新fifo文件。访问权限由模式指定,并受调用进程的umask(2)限制。
fifo的所有者ID设置为进程的有效用户ID。fifo的组ID设置为创建它的父目录的组ID。
const char*path
是非常自解释的,使用该参数调用mkfifo函数不会有问题,但我更关心的是mode\t参数。手册页对模式的用途给出了一个小的解释,但没有解释如何使用它来调用函数

有没有办法浏览手册页来理解这些论点


我尝试了
人工模式
人工模式
,但什么都没有出现。

人工页面假设您对其他地方比较熟悉,您可以使用一个模式标志来显示:

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

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

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

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

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

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

为模式提供了以下符号常量:

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

  • ,在这种情况下并不特别有用,以及
  • ,它为各种模式枚举一组符号常量

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

您要求的内容已经存在,这是命令
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::.
如果将光标移动到
*注意设置权限::.
位上,然后按ENTER键,您将进入
umask
页面,其中包含文件权限的更详细说明


此外,
info
可以在只有给定主题的手册页可用时读取手册页。简而言之,您再也不必使用
man

此外,它与所使用的模式位相同。在这种特殊情况下,在手册页第2节的“打开”部分中对这些模式进行了详细描述。@OliCharlesworth我知道我可以打开浏览器进行查找,但是否有方法导航手册页?(这也是一个手册页吗?)手册页是出了名的密集,很难在两者之间切换。请尝试继续执行手册页中的“请参见”部分,或使用外壳中描述
标志的“apropos”命令查找相关命令。您需要3个参数版本的
open()
,其中第三个参数是
mode
。上面只写了“chmod”、“stat”、“umask”,但显然stat就是奥利所指的above@BrandonLing:再次检查,确保键入
man 3 mkfifo
@jxh,它显示没有该手册页。只有man 2 mkfifo对我有用。@jxh是的,第3节中关于mkfifo的手册页(无论如何,在Ubuntu上)包括“参见mkfifo(1)、close(2)、open(2)、read(2)、stat(2)、umask(2)、write(2)、mkfifoat(3)、fifo(7)”。