Linux man 手冊章節分類

Linux的man很強大,該手冊分成很多section,使用man時可以指定不同的section來瀏覽,各個section意義如下:
1 - commands
2 - system calls
3 - library calls
4 - special files
5 - file formats and convertions
6 - games for linux
7 - macro packages and conventions
8 - system management commands
9 - 其他

其中:
1是普通的命令
2是系統調用,如open,write之類的
3是庫函數,如printf,fread
4是特殊文件,也就是/dev下的各種設備文件
5是指文件的格式,比如passwd, 就會說明這個文件中各個字段的含義
6是給遊戲留的,由各個遊戲自己定義
7是附件還有一些變量,比如向environ這種全局變量在這裏就有說明
8是系統管理用的命令,這些命令只能由root使用,如ifconfig
使用手冊方式舉例:
man 1 ls #查看第一章中的ls命令幫助
man 3 printf #查看庫函數printf幫助

對於像open,kill這種既有命令,又有系統調用的來說,man open則顯示的是open(1),也就是從最前面的section開始,如果想查看open系統調用的話,就得man 2 open


關於man的擴展man pages:

man pages是c語言的庫函數man手冊,該手冊支持man查詢ISO C標準庫頭文件和函數。

關於庫函數和系統調用
庫函數是高層的,完全運行在用戶空間, 爲程序員提供調用真正的在幕後完成實際事務的系統調用的更方便的接口。系統調用在內核態運行並且由內核自己提供。標準C庫函數printf() 可以被看做是一個通用的輸出語句,但它實際做的是將數據轉化爲符合格式的字符串並且調用系統調用 write() 輸出這些字符串。
是否想看一看printf() 究竟使用了哪些系統調用? 這很容易,編譯下面的代碼:
#include <stdio.h>
int main()
{
printf("hello");
return 0;
}
使用命令gcc -o hello hello.c 編譯。用命令 strace hello 跟蹤該可執行文件。是否很驚訝? 每一行都和一個系統調用相對應。 strace是一個非常有用的程序,它可以告訴你程序使用了哪些系統調用和這些系統調用的參數,返回值。 這是一個極有價值的查看程序在幹什麼的工具。在輸出的末尾,你應該看到這樣類似的一行 write(1, "hello", 5hello) 。這就是我們要找的。藏在面具printf() 的真實面目。既然絕大多數人使用庫函數來對文件I/O進行操作(像 fopen, fputs, fclose)。 你可以查看man說明的第二部分使用命令man 2 write 。man說明的第二部分專門介紹系統調用(像kill() 和read() )。
man說明的第三部分則專門介紹你可能更熟悉的庫函數(像cosh() 和random() )。
你甚至可以編寫代碼去覆蓋系統調用,用它來完成一些更有益的事,像讓內核在每次某人刪除文件時輸出 “ Tee hee, that tickles! ” 的信息。
發佈了49 篇原創文章 · 獲贊 4 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章