手册页:如何使用参数

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 的说明很少,但没有解释如何使用它来调用函数。

有没有办法通过 man 手册来理解这样的参数?

我尝试了 man mode_tman mode,但什么都没有出现。


http://pubs.opengroup.org/onlinepubs/7908799/xsh/sysstat.h.html - Oliver Charlesworth
1
同样,它是用于open()的模式位。 - jxh
@OliCharlesworth 我知道我可以打开浏览器查找,但有没有一种方法可以导航到 man 手册页?(那也是一个 man 手册页吗?) - Brandon Ling
这里有一个描述mode_t的页面:http://www.kneuro.net/cgi-bin/lxr/http/ident?i=mode_t。但我不知道man手册是否有一种通用的搜索“数据类型”的方法。 - ryyker
2
手册页通常非常密集且难以跳转。建议查看手册页中的“另请参见”部分或在 shell 中使用“apropos”命令寻找相关命令。 - 3rf
显示剩余2条评论
2个回答

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页面,其中包含更详细的文件权限描述。
此外,当只有给定主题的man页面可用时,info可以阅读man页面。简而言之,您再也不必使用man了。

1
这个 man 手册假定你在使用模式标志时已经有了一些熟悉。它说:“通常情况下,由进程的 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 命令访问的 man 手册包括(同时描述标志):
如果文件不存在,则创建文件。文件的所有者(用户ID)设置为进程的有效用户ID。组所有权(组ID)设置为进程的有效组ID或父目录的组ID(取决于文件系统类型和挂载选项以及父目录的模式,详见mount(8)中描述的mount选项bsdgroups和sysvgroups)。mode指定在创建新文件时要使用的权限。必须在flags中指定O_CREAT时提供此参数;如果未指定O_CREAT,则忽略mode。进程的umask以通常的方式修改有效权限:创建的文件的权限为(mode&~umask)。请注意,该模式仅适用于对新创建文件的将来访问;创建只读文件的open()调用可能会返回一个读/写文件描述符。以下符号常量可用于mode:...
另一种可能有用的方法是搜索手册指定的包含文件的信息。例如,搜索sys/types.hsys/stat.h会出现以下结果: 我知道这并不排除需要“在网上查找示例”的可能性。有些系统可能包括头文件的手册页面,但其他系统可能没有。

这是描述“标志(flags)”参数的内容。您需要使用三个参数的“open()”版本,其中第三个参数是“模式(mode)”。 - jxh
对我来说,SEE ALSO 中并不包括 open()。它只提到了 "chmod"、"stat"、"umask",但显然 stat 是 Oli 上面所指的内容。 - Brandon Ling
@BrandonLing:再检查一遍,确保你输入了“man 3 mkfifo”。 - jxh
@jxh,它说没有相关的手册页。只有 man 2 mkfifo 对我有效。 - Brandon Ling
我正在使用Mac OS X,Mountain Lion。 - Brandon Ling
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接