使用Linux下man已經很久了。但只是大概知道其內容的存放目錄,以及man number xxx中mumber的含義。今天需要添加C++ man page。順便將man的內容作一個較詳細的瞭解。
0. man後面數字的含義:
之前Sam在查找C庫函數時,會使用#man 3 func
在查找系統調用時,則使用#man 2 fork.
否則有時會出現查到同名的shell中命令的情況,如#man printf.
只是大概明白這個數字表示的是不同類型,但其具體是什麼,以及如何發揮作用。則並不清楚。
詳細說明如下:
1 shell中用戶可用的命令(User Commands)
2 使用函數庫中程序可用的系統調用
3 程序中可用的庫函數
4 /dev目錄中可用的設備
5 多種雜項系統文件(ex:/etc/)
6 如果有的話,遊戲程序
7 雜項信息
8 管理員可用的命令
1. man命令的搜索路徑:
1:$PATH變量指定的路徑
2:/etc/man.config文件中MANPATH中指定的路徑
其中/etc/man.config中有如下內容:
MANPATH /usr/man
MANPATH /usr/share/man
MANPATH /usr/local/man
MANPATH /usr/local/share/man
MANPATH /usr/X11R6/man
所以,如果需要添加新的man page.則只需要將man page目錄添加到/etc/man.config MANPATH項目既可。
2. 如果在以上8類man page中有重名項目。是如何確定哪個優先顯示:
在/etc/man.config中,有一項:MANSECT,用來指定顯示優先級。
MANSECT 1:1p:8:2:3:3p:4:5:6:7:9:0p:n:l:p:o:1x:2x:3x:4x:5x:6x:7x:8x
如果沒有指定具體顯示哪一個,則按MANSECT順選來顯示。
例如:
#man printf
則會優先顯示1.shell中用戶可用的命令
可以使用#man -a printf查看其順序。
其中3p的p,表示 POSIX。
4. 幫助文件格式:
man程序讀取的幫助文件格式分爲兩大類.
1. troff程序編寫的源程序.
2. 通過壓縮工具壓縮過的源程序.
man程序可以直接讀取的格式,是第一大類,和第二大類中用gzip壓縮的幫助文件.
其它的壓縮格式的處理,則在/etc/man.config中指定:
.gz /usr/bin/gunzip -c
.bz2 /usr/bin/bzip2 -c -d
.z
.Z /bin/zcat
.F
.Y
/usr/share/man存放了絕大多數的幫助文件,而且都是壓縮格式的幫助文件.
/usr/local/share/man存放的都是以文本格式的幫助文件.
例如:使用gunzip -c /usr/share/man/man3/strcpy.3.gz的內容,
就與#man 3 strcpy 結果對應。
5. man 文件結構:
/usr/share/man中包括man1,man2,man3,man3p....man8等目錄。其中man後的數字,就是對應前面知識點0中的list.
增加C++ 標準庫 man page:
1.download
ftp://gcc.gnu.org/pub/gcc/libstdc++/doxygen/
2.解壓縮,將man3目錄copy到/usr/share/c++/man目錄中。
3.在/etc/man.config中添加
MANPATH /usr/share/c++/man
然後使用:
#man std::iostream
成功。
另外:std man 也可以在
http://docsrv.sco.com/man/html.3C++std/
看到。更方便。