我們?cè)诰帉慙inux運(yùn)行庫(kù)時(shí),特別是作為組件提交給其他程序員使用時(shí),很有必要提供返回消息以提高組件在開(kāi)發(fā)過(guò)程中的可用性 。本文將為您講述一些實(shí)用的技巧 。
在編寫C/C應(yīng)用時(shí),我們非常熟悉系統(tǒng)調(diào)用中的返回消息的處理 。在返回消息中,包含了兩類信息,一個(gè)是返回信息代碼,指明返回的是何類信息;另一個(gè)返回的是信息的文字說(shuō)明,指明調(diào)用是否成功 。這兩類信息均有各自的作用,不能相互代替 。比如調(diào)用加載內(nèi)存的系統(tǒng)調(diào)用,如果該內(nèi)存已經(jīng)加載,該調(diào)用可能返回錯(cuò)誤,但是程序可能還會(huì)繼續(xù)正確運(yùn)行,如果需要中止程序,則需要了解程序中止的具體原因,這時(shí)僅靠返回消息標(biāo)識(shí)是不夠的,返回信息文字說(shuō)明則立刻讓用戶知道錯(cuò)誤原因 。我們?cè)诰帉慙inux運(yùn)行庫(kù)時(shí),特別是作為組件提交給其他程序員使用時(shí),很有必要提供類似的返回消息,以提高組件在開(kāi)發(fā)過(guò)程中的可用性 。
1. 利用標(biāo)準(zhǔn)C庫(kù)中的返回消息
在自己組件中的方法或過(guò)程中,如果消息比較一般,可以直接利用標(biāo)準(zhǔn)C庫(kù)中的返回消息 。標(biāo)準(zhǔn)C庫(kù)中的返回消息代碼定義列在頭文件errno.h中,返回消息是用從0開(kāi)始的一個(gè)整數(shù)值表示的,其中0為正確的返回值,其他為警告類型或錯(cuò)誤類型的返回值 。在標(biāo)準(zhǔn)C庫(kù)中,用了一個(gè)全局變量errno來(lái)指明當(dāng)前調(diào)用的返回消息值 。在組件的方法或過(guò)程中,可以直接設(shè)置errno的值,當(dāng)然要符合errno.h中的類型定義 。在調(diào)用組件中的方法或過(guò)程時(shí),可以直接調(diào)用C中的函數(shù)perror()或strerrno()來(lái)提交返回消息的文字說(shuō)明 。
2. 實(shí)現(xiàn)自定義的返回消息
一般情況下,標(biāo)準(zhǔn)C中的消息不足以反映自己組件中的方法或過(guò)程運(yùn)行狀態(tài)的 。這時(shí)需要實(shí)現(xiàn)自己特有的返回消息 。主要步驟如下:
第一,規(guī)定返回消息代碼 。
組件中方法或過(guò)程的運(yùn)行狀態(tài)中有一部分要作為返回值,這些返回值要反映多種復(fù)雜的運(yùn)行狀態(tài),有成功返回值、一般運(yùn)行消息值、警告值、一般錯(cuò)誤值、嚴(yán)重錯(cuò)誤值等 。返回消息代碼要直接反映這些狀態(tài) 。另外,返回值中還需要反映該方法或過(guò)程位于那個(gè)組件中 。我們可以用一個(gè)整數(shù)值的頭兩位標(biāo)識(shí)返回類型,其中成功返回值、一般運(yùn)行消息值用正數(shù),可以分別標(biāo)識(shí)為0X10000000,0X20000000 。警告值、一般錯(cuò)誤值、嚴(yán)重錯(cuò)誤值用負(fù)數(shù)值,可以分別標(biāo)識(shí)為0X80000000,0X90000000,0XA0000000 。而組件可以用第二個(gè)字節(jié)標(biāo)識(shí),如事務(wù)安全組件用11標(biāo)識(shí),則可以用0X000B00000標(biāo)識(shí) 。返回消息的具體代碼則可以沿用標(biāo)準(zhǔn)C庫(kù)中的表示方法,如正確返回值用0標(biāo)識(shí),某一嚴(yán)重錯(cuò)誤錯(cuò)誤用5表示 。則對(duì)于事務(wù)安全組件,這兩種消息可以標(biāo)識(shí)為0X100B0000和0XA00B0005 。
第二,表述返回消息的文字說(shuō)明
表述返回消息的文字說(shuō)明列在組件里的一個(gè)字符串?dāng)?shù)組中,各個(gè)消息的文字說(shuō)明在數(shù)組中的位置按照消息的具體代碼值決定 。
例如事務(wù)安全組件中定義如下四個(gè)返回消息:0,成功返回值;1,事務(wù)定義錯(cuò)誤;2,事務(wù)提交錯(cuò)誤;3,事務(wù)返回錯(cuò)誤 ??梢栽诙x如下字符串?dāng)?shù)組:
char *ReturnMessage_11[] =;
{;
"成功返回",;
"事務(wù)定義錯(cuò)誤",;
"事務(wù)提交錯(cuò)誤",;
"事務(wù)返回錯(cuò)誤",;
(char *)0;
}
};
對(duì)應(yīng)的返回消息代碼分別為:0X100B0000,0X900B0001,0X900B0002,0X900B0003 。
第三,注冊(cè)組件返回消息
在利用組件開(kāi)發(fā)應(yīng)用時(shí),首先在組件的構(gòu)造函數(shù)或初始化函數(shù)中注冊(cè)組件返回消息,這一步是隱藏在組件內(nèi)部 。對(duì)于外部應(yīng)用提供了一個(gè)全局的指向組件返回消息字符串?dāng)?shù)組的指針msg_ptr 。注冊(cè)代碼如下:
void *handle
char *messageShow
推薦閱讀
- Linux操作系統(tǒng)下的離線瀏覽器介紹
- 口袋里的Linux:在您的U盤上運(yùn)行SLAX
- 蘋果怎么設(shè)置指紋下載app
- 活學(xué)活用Linux操作系統(tǒng)的后臺(tái)任務(wù)
- Linux操作系統(tǒng)下的常見(jiàn)系統(tǒng)資源共享
- Linux 網(wǎng)管 123 --- 第6章. 一般系統(tǒng)管理問(wèn)題 -3.變更使用者密碼
- Linux操作系統(tǒng)下如何刪除Windows分區(qū)
- 如何在Linux系統(tǒng)中添加新的系統(tǒng)調(diào)用
- Linux操作系統(tǒng)筆記本電池使用技巧
- 如何在Linux系統(tǒng)下用DMA方式傳輸數(shù)據(jù)
