網(wǎng)站管理助手 ftp2021年網(wǎng)絡(luò)十大關(guān)鍵詞
iTOP-4412開發(fā)板【精英版】搭載三星Exynos四核處理器,配備1GB內(nèi)存,4GB固態(tài)硬盤EMMC存儲(chǔ),兼具快速讀取與大容量,縱使海量思考也能及時(shí)處理。配備三星S5M8767電源管理。配備Android、Linux+Qt、Ubuntu操作系統(tǒng),開啟學(xué)習(xí)、研發(fā)的全新方式。Exynos4412開發(fā)板處理器成功應(yīng)用于三星GALAXYS3,聯(lián)想K860,魅族MX2等熱門產(chǎn)品當(dāng)中,并取得巨大成功。功耗控制以及強(qiáng)勁的性能一直為業(yè)內(nèi)稱道,超過5000萬片的出貨量,足以證明其穩(wěn)定性與可用性。已成為三星官方推廣的處理器之一,并承諾長期供貨。
第二十二章 時(shí)間函數(shù)專題
在編程中,時(shí)間的調(diào)用會(huì)經(jīng)常用到,例如:
程序員想檢測機(jī)器性能,那么需要運(yùn)行一段代碼,提取時(shí)間。
程序員需要在 log 文件中記錄一些特殊時(shí)間,例如懷疑某個(gè)驅(qū)動(dòng)出現(xiàn)了bug,就需要寫個(gè)demon來多次測試重啟機(jī)器,并且測試驅(qū)動(dòng)是否運(yùn)轉(zhuǎn)正常,這里就需要用到時(shí)間。
定時(shí)的應(yīng)用,在某個(gè)事件之后,經(jīng)過多長時(shí)間來進(jìn)行某項(xiàng)操作。
……
無論在任何操作系統(tǒng)中編程,都需要學(xué)習(xí)時(shí)間的編程,本章詳細(xì)介紹 Linux 常用的時(shí)間結(jié)構(gòu)體和 API 以及提供幾個(gè)常用的例程。
本節(jié)配套視頻為:
“視頻 13_01 時(shí)間之基本概念”
“視頻 13_02 時(shí)間之時(shí)間調(diào)用”
? “視頻 13_03 時(shí)間之時(shí)間轉(zhuǎn)換”
“視頻 13_04 時(shí)間之處理器性能測試”
22.1 Linux 中時(shí)間的幾個(gè)基本概念
UTC時(shí)間?
世界統(tǒng)一時(shí)間,世界各地的時(shí)間以這個(gè)為基準(zhǔn) 。
UNIX紀(jì)元時(shí)間
Unix time 是指從 1970 年 1 月 1 日 00:00:00 UTC 開始所經(jīng)過的秒數(shù)。
在 linux 中時(shí)間日期會(huì)以這種方式存儲(chǔ)時(shí)間,有效位是秒。例如經(jīng)過了 1 分鐘,這個(gè)數(shù)值會(huì)變大 60 秒。
格林尼治標(biāo)準(zhǔn)時(shí)(GMT)時(shí)間
GMT 是指太陽經(jīng)過英國格林尼治的時(shí)間。在英國很 NX 的時(shí)候,以格林尼治為 0 度經(jīng)線,將世界分為 24 個(gè)時(shí)區(qū)。
北京時(shí)間指的是東八區(qū)的時(shí)間,和格林尼治時(shí)間相差 8 個(gè)小時(shí)。
機(jī)器日歷時(shí)間
對于 Linux 來說,機(jī)器日歷時(shí)間是 UNIX 紀(jì)元時(shí)間。
?
22.2 時(shí)間調(diào)用
時(shí)間調(diào)用函數(shù)time
函數(shù) time_t time(time_t *t)在頭文件“#include <time.h>”中
參數(shù) 1:time_t 類型,以秒為單位,如果有參數(shù)則數(shù)據(jù)傳送到 time_t *t 中。
返回值:如果參數(shù)為 NULL 會(huì)返回 time_t 類型;出現(xiàn)錯(cuò)誤返回-1。
其中的時(shí)間類型 time_t,它是一個(gè) long 類型,及其機(jī)器日歷時(shí)間,在頭文件 time.h 中定義。
函數(shù)代碼
編寫簡單的 gettime.c 文件測試 gettime 函數(shù)。首先添加頭文件,如下圖所示。
?
然后 main 函數(shù)如下圖所示。?
?
如上圖代碼所示。使用了兩種方式返回時(shí)間,一種寫入?yún)?shù),一種寫入 NULL。
編譯運(yùn)行測試
在 Ubuntu 系統(tǒng)下,如下圖所示,進(jìn)入前面實(shí)驗(yàn)創(chuàng)建的目錄“/home/linuxsystemcode/”,使用命令“mkdir time”新建 time 文件夾,將源碼gettime.c 拷貝進(jìn)去,進(jìn)入新建的文件夾 time,如下圖所示。
?
使用命令“arm-none-linux-gnueabi-gcc -o gettime gettime.c -static”編譯 open 文件,如下圖所示,使用命令“l(fā)s”可以看到生成了 gettime 可執(zhí)行文件。?
?
這里介紹 U 盤拷貝代碼的方法,也可以編譯進(jìn)文件系統(tǒng)。將編譯成的可執(zhí)行文件 gettime,拷貝到 U 盤,啟動(dòng)開發(fā)板,插入 U 盤,加載 U 盤,運(yùn)行程序如下。?
?
如上圖所示,運(yùn)行兩次程序,兩次運(yùn)行有幾秒間隔,那么得到的時(shí)間就會(huì)不同。
22.3 時(shí)間轉(zhuǎn)換
如上面的實(shí)驗(yàn)所示,類似的 0x 進(jìn)制數(shù)對于人類來說太不容易知道具體含義了,需要將時(shí)間轉(zhuǎn)化為群眾喜聞樂見的年月日時(shí)分秒的形式。這部分內(nèi)容就涉及到本節(jié)介紹的時(shí)間格式轉(zhuǎn)換問題。
時(shí)間 tm 結(jié)構(gòu)體
如下所示
struct tm{
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst;
};
其中的成員如下:
int tm_sec; 秒 – 取值區(qū)間為[0,59]。
int tm_min; 分 - 取值區(qū)間為[0,59]。
int tm_hour; 時(shí) - 取值區(qū)間為[0,23]。
int tm_mday;一個(gè)月中的日期 - 取值區(qū)間為[1,31]。
int tm_mon;月份(從一月開始,0 代表一月) - 取值區(qū)間為[0,11]。
int tm_year;年份,其值等于實(shí)際年份減去 1900。
int tm_wday;星期 – 取值區(qū)間為[0,6],其中0表星期天,1 代表星期一,以此類推 。
int tm_yday;從每年的1月1日開始的天數(shù)–取值區(qū)間為[0,365],其中0代表1月1日,1代表1月2日,以此類推。
int tm_isdst; 夏令時(shí)標(biāo)識(shí)符,實(shí)行夏令時(shí)的時(shí)候,tm_isdst 為正。不實(shí)行夏令時(shí)的進(jìn)候,tm_isdst 為 0;不了解情況時(shí),tm_isdst()為負(fù)。
如果使用 time_t 類型的時(shí)間人類是無法識(shí)別,Linux 中提供了幾個(gè)時(shí)間轉(zhuǎn)換函數(shù)。
函數(shù) ctime:將時(shí)間轉(zhuǎn)化為字符串格式。
char *ctime(const time_t *timep);
函數(shù) gmtime:將時(shí)間轉(zhuǎn)化為格林威治時(shí)間,以 tm 結(jié)構(gòu)存儲(chǔ)。
struct tm *gmtime(const time_t *timep);
函數(shù) asctime:將時(shí)間轉(zhuǎn)換為字符格式,注意這個(gè)函數(shù)的參數(shù)是 tm 結(jié)構(gòu)的。
char *asctime(const struct tm *tm);
函數(shù) localtime:將時(shí)間轉(zhuǎn)化為本地時(shí)間。
struct tm *localtime(const time_t *clock);
需要注意的是,上面幾個(gè)函數(shù)的參數(shù)和以及返回值是不同的。
函數(shù)代碼
編寫簡單的 exchangtime.c 文件測試 exchangtime 函數(shù)。首先添加頭文件,如下圖所示。
?
然后 main 函數(shù)如下圖所示。?
?
如上圖代碼所示。
函數(shù) time 用于獲取當(dāng)前時(shí)間。
函數(shù) ctime 將時(shí)間轉(zhuǎn)為字符串。
函數(shù) localtime 將時(shí)間轉(zhuǎn)化為本地時(shí)間。
函數(shù) gmtime 將時(shí)間轉(zhuǎn)換為格林威治時(shí)間。
函數(shù) asctime 將時(shí)間轉(zhuǎn)化為本地時(shí)間。
編譯運(yùn)行測試
在 Ubuntu 系統(tǒng)下,如下圖所示,進(jìn)入前面實(shí)驗(yàn)創(chuàng)建的目錄“/home/linuxsystemcode/time”,將源碼 exchangtime.c 拷貝進(jìn)去,進(jìn)入新建的文件夾time,如下圖所示。
?
使用命令“arm-none-linux-gnueabi-gcc -o exchangtime exchangtime.c -static”編譯 exchangtime 文件,如下圖所示,使用命令“l(fā)s”可以看到生成了 exchangtime 可執(zhí)行文件。?
?
這里介紹 U 盤拷貝代碼的方法,也可以編譯進(jìn)文件系統(tǒng),具體方法參考 10.3.5 小節(jié)。將編譯成的可執(zhí)行文件 exchangtime,拷貝到 U 盤,啟動(dòng)開發(fā)板,插入 U 盤,加載 U盤,運(yùn)行程序如下。?
?
如上圖所示,打印出字符串形式的時(shí)間。
小提示
在實(shí)際中,linux 單調(diào)的時(shí)間顯示方式在很多場合顯然不合適。這個(gè)時(shí)候用戶可以將時(shí)間提取出來,自定義輸出。
例如只想輸出當(dāng)前的時(shí)間或者當(dāng)前的日期之類的。
這個(gè)步驟很簡單就不再列舉例程了,只需要提取時(shí)間,做個(gè)簡單的處理就可以了。
22.4 測試處理器性能
測試性能以秒為單位明顯不夠,提高精度則需要本節(jié)介紹的函數(shù)。本節(jié)實(shí)驗(yàn)稍微修改一下就可以作為拿到任何開發(fā)板之后的測試?yán)獭?/p>
高精度時(shí)間函數(shù)
函數(shù) gettimeofday 在頭文件“<sys/time.h>”中。接著介紹精度高一點(diǎn)的設(shè)置時(shí)間函數(shù)和讀取時(shí)間函數(shù)。
int gettimeofday(struct timeval *tv, struct timezone *tz);
int settimeofday(const struct timeval *tv, const struct timezone *tz);
上面兩個(gè)時(shí)間函數(shù)在頭文件“#include <sys/time.h>”中。先來介紹一下參數(shù)中的兩個(gè)結(jié)構(gòu)體。
struct timeval {
time_t tv_sec;/* seconds */
suseconds_t tv_usec;/* microseconds */
};
struct timezone {
int tz_minuteswest;/* minutes west of Greenwich,格林威治時(shí)間的時(shí)差 */
int tz_dsttime;/* type of DST correction,時(shí)間修正的方式 */
};
如上所示,介紹一下參數(shù)。
參數(shù) tv:用于保存獲取的時(shí)間。
參數(shù) tz:可以缺省,傳入 NULL。
上面獲取的時(shí)間精度達(dá)到了微妙,比 time 函數(shù)獲取的時(shí)間精度要高 6 個(gè)數(shù)量級。這個(gè)精度就可以用于計(jì)算代碼執(zhí)行時(shí)間了。
實(shí)驗(yàn)代碼
編寫簡單的 precisiontime.c 文件測試 gettimeofday 和 settimeofday 函數(shù)。首先添加頭文件,如下圖所示。
?
然后看一下耗時(shí)的函數(shù),比較簡單就是一個(gè)循環(huán)。?
?
然后 main 函數(shù)如下圖所示。?
?
如上圖代碼所示。通過 gettimeofday 獲取兩次當(dāng)前時(shí)間,運(yùn)行耗時(shí)函數(shù)之后計(jì)算差值,最后將耗時(shí)計(jì)算出來。
編譯運(yùn)行測試
在 Ubuntu 系統(tǒng)下,如下圖所示,進(jìn)入前面實(shí)驗(yàn)創(chuàng)建的目錄“/home/linuxsystemcode/time,將源碼 precisiontime.c 拷貝進(jìn)文件夾 time,如下圖所示。
?
使用命令“arm-none-linux-gnueabi-gcc -o precisiontime precisiontime.c -static” 編譯 precisiontime 文件,如下圖所示,使用命令“l(fā)s”可以看到生成了 precisiontime 可執(zhí)行文件。?
?
這里介紹 U 盤拷貝代碼的方法,也可以編譯進(jìn)文件系統(tǒng),具體方法參考 10.3.5 小節(jié)。將編譯成的可執(zhí)行文件 precisiontime,拷貝到 U 盤,啟動(dòng)開發(fā)板,插入 U 盤,加載 U盤,運(yùn)行程序如下。?
?
如上圖所示,可以看到這個(gè)循環(huán)耗時(shí)為 0.088172 秒。
22.5 man命令的使用
在開發(fā)板的使用手冊中,簡單的介紹過使用 man 查找 linux 的命令,但是強(qiáng)大的 man 命令不止查找命令這一個(gè)簡單的功能。還可以查找各種 API 函數(shù),想要學(xué)會(huì) linux 編程,這個(gè)man 命令一定要非常熟練度的掌握。
man 命令熟悉之后,很多東西就可以不用教程,不用手冊,可以自己進(jìn)行學(xué)習(xí)了。將來大家獨(dú)立做實(shí)際項(xiàng)目或者學(xué)習(xí)的時(shí)候,會(huì)經(jīng)常用到 man 命令的。
在做技術(shù)支持的時(shí)候,很多同學(xué)問到如何學(xué)習(xí)英語。
我的回答很簡單“看到不會(huì)的單詞,記下來,有空的時(shí)候看一下,直到記住為止”。工作中用到的專業(yè)英語,沒有捷徑,只有一遍一遍的記,一個(gè)一個(gè)的記。
在這件事情上,對所有人都是公平公正的,一份耕耘一份收獲! 不過專業(yè)詞匯也沒有幾個(gè),一般很快就流暢了。
大多數(shù)用戶學(xué)習(xí)這里,會(huì)感到一點(diǎn)迷?;蛘叱粤?。覺得那么多函數(shù),那么多頭文件,怎么記得住!
事實(shí)上,學(xué)習(xí)到一個(gè)階段之后,就需要自學(xué)了,那么到了什么程度可以開始自學(xué)?怎么自學(xué)呢?
利用提供的教程,對 linux 的整個(gè)知識(shí)框架有較全面的了解之后,如果自己感覺對某一個(gè)知識(shí)點(diǎn)不了解,可以看一下網(wǎng)上對應(yīng)的文章,這里強(qiáng)烈建議大家使用 Google 去學(xué)習(xí)。
另外就是看官方的手冊,學(xué)習(xí) window 或者 Android 的開發(fā),都是學(xué)習(xí)開發(fā)文檔,開發(fā)文檔中提供了詳細(xì)學(xué)習(xí)和編程資料。在 linux 下編程,用的最多的就是 man 命令,man 命令就類似 window 和 Android 下的開發(fā)文檔,極其強(qiáng)大。
其實(shí)使用 man 命令可以很容易查到最權(quán)威的頭文件,函數(shù)定義,函數(shù)參數(shù),函數(shù)描述等等。
前面介紹 man 命令,只是針對 linux 命令簡單的介紹了一下,本章給大家介紹如何使用man 命令查找資料,以及資料的結(jié)構(gòu)。
man 系統(tǒng)
先來學(xué)習(xí)一下 man 系統(tǒng)的信息,man 命令本身也是一個(gè)閱讀文檔的小程序,man 也是屬于 linux 命令,那么使用 man 命令是可以查詢 linux 命令的,根據(jù)慢查閱的語法就可以使用“man man”查找 man 相關(guān)的文檔資料(很繞口,可以看下面的例子)。
如下圖所示,在 Ubuntu 系統(tǒng)下使用命令“man man”,來查閱一下 man 本身。
?
如下圖所示,是 man 命令相關(guān)的資料文檔。?
?
如下圖所示,man 命令文檔非常多,在 Ubuntu16.04.2 上有 700 多頁(注意不同的linux 系統(tǒng)下,因?yàn)榘姹静煌?man 命令稍微會(huì)有點(diǎn)區(qū)別的,不過大概的用法都是類似)?
?
man 的分頁
通常情況下,UNIX 系統(tǒng)上的所有軟件(包括每個(gè)命令行實(shí)用程序、每個(gè)系統(tǒng)調(diào)用、編程庫中每個(gè)可調(diào)用的函數(shù)和每種文件格式)都包含一個(gè)手冊頁。實(shí)際上,在構(gòu)建新軟件時(shí)編寫并提供手冊頁被認(rèn)為是一種必要的 “禮節(jié)”。
在以前,手冊頁存儲(chǔ)庫曾經(jīng)放在 /usr/man。最近,存儲(chǔ)位置已經(jīng)改為/usr/share/man,但是具體位置因 UNIX 版本而異。另外,軟件包經(jīng)常把它的手冊頁放在自己的根目錄的子目錄中。例如,MySQL 數(shù)據(jù)庫引擎的一些版本把手冊頁存儲(chǔ)在/usr/local/mysql/man 中。這些策略都是允許的,但是,如果手冊頁分散在許多存儲(chǔ)庫中,就需要一些額外的配置。
如下圖所示,是打開 man 文檔之后的截圖,紅色箭頭指的 man 后面有個(gè)(1)。
?
無論它的位置在哪里,每個(gè)存儲(chǔ)庫都劃分為一個(gè)或多個(gè)部分。每個(gè)部分實(shí)現(xiàn)為一個(gè)獨(dú)立的子目錄。每個(gè)部分按慣例命名為 man1、man2 直到 man8,分別包含一類命令的手冊頁。
表 1 列出部分名及其內(nèi)容。
man 手冊分頁的標(biāo)準(zhǔn)內(nèi)容。
man1 | 一般命令。這個(gè)部分中的命令通常不需要超級用戶(即管理員)特權(quán)。 ls、cat 和 passwd 放在這里,還有 shell。例如,請?jiān)囋?man bash。 |
man2 | 用來訪問 UNIX 內(nèi)核提供的服務(wù)的系統(tǒng)調(diào)用或函數(shù)。例如 fork 系統(tǒng),它從一個(gè)現(xiàn)有的進(jìn)程生成一個(gè)新進(jìn)程。輸入 man fork 顯示它的手冊頁。使 用系統(tǒng)軟件的程序員常常參考這個(gè)部分。 |
man3 | C 庫函數(shù)。許多軟件包提供功能豐富的代碼庫,讓開發(fā)人員可以創(chuàng)建新軟件來補(bǔ)充現(xiàn)有的特性或開發(fā)全新的特性。每個(gè)庫通常有一個(gè)手冊頁;一些庫(比如系統(tǒng)的 libc)太大了,所以各個(gè)函數(shù)或一組相關(guān)函數(shù)有單獨(dú)的文檔。 |
man4 | 特殊文件,比如設(shè)備和驅(qū)動(dòng)程序。 |
man5 | 文件格式。UNIX 幾乎完全使用文本配置文件定制系統(tǒng)的操作。有大量配置文件,包括網(wǎng)絡(luò)服務(wù)的列表 (/etc/services) 和可用的 shell 列表(/etc/shells) 等等。 |
man6 | 游戲和屏幕保護(hù)程序。 |
man7 | 雜類文件。這是一個(gè)包羅萬象的類別。在傳統(tǒng)的系統(tǒng)上,可以了解 glob操作符、正則表達(dá)式等方面的信息。 |
man8 | 系統(tǒng)管理命令,超級用戶很可能要使用它們。 |
上面的 8 種 man 命令,通常使用的 man1、man2 和 man3 比較多,而且并不是所有的都有上面八種文檔,有的只有一種,或者兩種文檔。
可能前面“man man”大家還是不太容易理解。后面舉幾個(gè)容易理解的例子,大家稍微加把勁,很快就能熟練應(yīng)用了。
手冊頁的框架
盡管各個(gè)命令的選項(xiàng)差異很大,但是手冊頁的內(nèi)容相當(dāng)有規(guī)律。實(shí)際上,手冊頁之所以是寶貴的參考資料,就是因?yàn)樗鼈兎蠎T例。閱讀一小段文字之后,您很快就能夠跳到文檔的正確部分,找到您要找的信息。
最簡單的手冊頁包含五個(gè)部分:名稱、大綱、描述、一些示例和其他相關(guān)資料的引用。
name(名稱)給出命令、函數(shù)或文件格式的名稱,以及對軟件作用的單行的準(zhǔn)確描述。
synopsis(大綱)簡要描述如何使用這個(gè)軟件。如果手冊頁的主題是命令,那么這個(gè)部分顯示必需的和可選的選項(xiàng)、參數(shù)的格式和參數(shù)次序。如果主題是系統(tǒng)調(diào)用或庫函數(shù),那么這個(gè)部分顯示函數(shù)的形式參數(shù)以及使用函數(shù)所需的頭文件(如果有的話)。
例如,下面是 BSD UNIX 上 du 命令的大綱。
du [-H | -L | -P] [-a | -s | -d depth] [-c] [-h | -k | -m | -g] [-x] [-I mask] [file ...]
命令大綱中使用的表示法是手冊系統(tǒng)中有幫助的慣例之一(一些建模實(shí)用程序提供的使用方法提示借鑒了這種表示法)。這里的大綱的意思是,“輸入 du;可選地輸入 -H、-L 或 - P 選項(xiàng)之一;然后,可選地輸入 -a、-s 或 -d 之一,但是如果使用最后一個(gè)選項(xiàng),還要指定一個(gè)深度(depth);指定 -c,也可以不指定;可選地輸入 -h、-k、-m 或 -g 之一;指定-x,也可以不指定;指定 -I 和一個(gè)掩碼,也可以不指定;最后,提供一個(gè)或多個(gè)文件名。省略號 (...) 表示多于一個(gè)。
分組在一起的選項(xiàng)(比如第一組 -H、-L 和 -P)的關(guān)系就像是圖形用戶界面 (GUI) 中的單選按鈕:只能選擇其中一個(gè)。獨(dú)立的選項(xiàng)(比如 -c 和 -x)就像是復(fù)選框:可以打開或關(guān)閉。這種表示法很容易閱讀,很快就可以按照它輸入命令。
下面是 open() 系統(tǒng)調(diào)用的大綱:
#include <fcntl.h>
int open(const char *path, int oflag, ...);
這個(gè)大綱表明,需要頭文件 fcntl.h,open() 返回一個(gè)整數(shù),必須指定要打開的文件的路徑和一組決定模式(只讀、讀/寫、打開并截?cái)嗟鹊?#xff09;的標(biāo)志。
description(描述)部分討論特性、使用方法和命令行上可以使用的所有選項(xiàng)。如果想知道 du -H 的作用,可以閱讀描述中的文本。
examples(示例)部分給出實(shí)用程序的一般用途、常見的特殊情況和解釋。
最后一部分 See Also(參見)提供相關(guān)資料的引用,比如其他相關(guān)命令、重要的系統(tǒng)文件、行業(yè)標(biāo)準(zhǔn)規(guī)范等等。
除了前面提到的幾個(gè)部分,在手冊頁中可能還有其他特殊部分。一個(gè)重要的部分是“Environment(環(huán)境)”??梢栽O(shè)置它列出的環(huán)境變量來影響實(shí)用程序的操作。例如, man 的手冊頁列出 10 個(gè)多環(huán)境變量,可以通過修改它們定制 man。其中之一是MANPATH,它指定尋找手冊頁時(shí)要搜索的目錄。
Linux命令手冊頁舉例1
下面給大家看一下 sleep 命令,如下圖所示,使用命令“man sleep”,先不帶頁。
?
如上圖所示,可以看到 NAME,DESCRIPTION,AUTHOR。
NAME 中描述了函數(shù)名是 sheep,以及基本功能是延時(shí)一段時(shí)間
SYNOPSIS 描述了如何使用這個(gè)程序,sleep 后面加數(shù)字 number
UTHOR 是作者,也就是誰寫的這個(gè)文檔。
DESCRIPTION 是描述這個(gè)程序特性、使用方法以及可以使用的選項(xiàng)。
如下圖所示,向下翻。
?
如上圖所示,可以看到 REPORTING BUGS、COPYRIGHT、SEE ALSO
REPORTING BUGS 如果發(fā)現(xiàn)使用的時(shí)候發(fā)現(xiàn)了 BUG,可以怎么提交報(bào)告。
COPYRIGHT 版權(quán),版權(quán)要遵循一系列的 GPL 協(xié)議,在后面驅(qū)動(dòng)教程中會(huì)介紹 GPL 協(xié)議。
SEE ALSO 參見,提供引用的相關(guān)資料。sleep(3)這個(gè)要注意,也就是說這個(gè) sleep 在 C 庫頁部分,可以使用“man 3 sleep”。
使用命令“man 1 sleep”,那么查找的就是函數(shù) sleep 的命令,本小節(jié)的是 sleep(1),
使用命令“man 3 sleep”,查找的就是 c 庫中的用法了。
還會(huì)提示可以使用其它的頁。
Linux 命令手冊頁舉例 2
接著看一下“man 3 sleep”命令,如下圖所示。
?
如下圖所示。?
?
如上圖所示,有 NAME,SYNOPSIS,DESCRIPTION,RETURN VALUE, CONFORMING TO,BUGS 等
可以看到地方 sleep 只能延時(shí)秒了,前面 sleep 命令是可以延時(shí)天和小時(shí)的。這里作為 c 的庫文件,介紹了頭文件以及函數(shù)原型,返回值等等前面一張圖下翻,如下圖所示。
?
如上圖所示,特別要注意上面的 SEE ALSO,它會(huì)介紹相關(guān)的函數(shù),也就是在某些場合的應(yīng)用有相關(guān)性的函數(shù),這里有 alarm,nanosleep,signal,signal,因?yàn)檫@幾個(gè)函數(shù)都可以實(shí)現(xiàn)延時(shí)功能,不過屬于不同的方式。
另外 alarm(2),括號的 2 表示可以使用“man 2 sleep”查看它。
前面介紹的專題延時(shí)、專題時(shí)間管理以及后面要介紹的專題,大家在使用的實(shí)驗(yàn)手冊之余,可以使用 man 命令參考著學(xué)習(xí)!
這個(gè) man 命令易學(xué),容易上手,雖然初期需要花習(xí)慣使用英文,但是一旦大家習(xí)慣了, 對大家后面的發(fā)展會(huì)有很大的幫助的。
這個(gè)過程非常重要,介紹的東西,只是其中的一部分。如果大家將來需要用到其它部分, 那么還是需要使用 man 命令來查找相關(guān)文檔的。
?