国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Linux > 正文

Linux程序設(shè)計殿堂的善意提醒

2024-08-27 23:58:16
字體:
供稿:網(wǎng)友

Linux操作系統(tǒng)除了安全、穩(wěn)定,深受系統(tǒng)管理員喜愛外,還有一個深受大家歡迎的原因就是其是開源的。只要系統(tǒng)管理員有這個能力,就可以在操作系統(tǒng)原有的功能上開發(fā)所需要的功能。所以說,如果不了解在Linux操作系統(tǒng)下如何編程,那么這個系統(tǒng)管理員只能說是半個系統(tǒng)管理員。剛好前不久有個朋友他想走Linux程序設(shè)計這條道路,問我該怎么走?筆者今天就這個機(jī)會,對想走這條道路的朋友做一些善意的提醒。

一、要注意與C語言的差異。

在Linux操作系統(tǒng)下實現(xiàn)程序開發(fā),包括嵌入式開發(fā)在內(nèi),基本上采用的都是C語言開發(fā)結(jié)構(gòu),但是這里需要注意的是,Linux系統(tǒng)下采用的C語言跟其他的C語言有很大的不同,特別是那些在學(xué)校里學(xué)過C語言,或者以前有C語言開發(fā)經(jīng)歷的,現(xiàn)在要轉(zhuǎn)到Linux系統(tǒng)功能的開發(fā),就需要特別注意這個問題,如下面是一個在Linux系統(tǒng)下開發(fā)的一個簡單的屏幕歡迎界面的源代碼。

  1. int main (int argc,char** argv) 
  2. printf(“Welcome!Linux!n); 
  3. return 0; 

各位仔細(xì)看看這個main函數(shù),跟傳統(tǒng)的C語言中的main函數(shù)有什么區(qū)別嗎?從格式上看其來好像比較類似,但是在Linux操作系統(tǒng)下的C應(yīng)用程序與其他C語言的應(yīng)用程序還是有很大區(qū)別的,就拿上面這個main函數(shù)來說,就有不同。大家在仔細(xì)看看上面這個main函數(shù),就會發(fā)現(xiàn)在這個函數(shù)中,筆者使用了參數(shù)。這在Linux操作系統(tǒng)下的C應(yīng)用程序源代碼中是可以的,但是如果在其他的C語言開發(fā)環(huán)境中,這是禁止的。即在main函數(shù)中不可以帶參數(shù)。其實在大部分的Linux操作系統(tǒng)命令中都帶有參數(shù)。如ls、who命令等等,都可以傳遞參數(shù)進(jìn)去。所以說,雖然他們都是從main函數(shù)開始執(zhí)行。但是統(tǒng)傳統(tǒng)的C語言相比,Linux操作系統(tǒng)下的C語言應(yīng)用程序在這個函數(shù)中可以帶參數(shù),而且還可以有返回值。

為此筆者給出的第一個善意提醒就是,如果各位讀者有C語言的編程或者學(xué)習(xí)經(jīng)歷的,對于Linux操作系統(tǒng)下的C應(yīng)用程序開發(fā)或許能夠帶來幫助。畢竟在一些語言結(jié)構(gòu)與命令使用上有很多類似的地方。但是在真正的進(jìn)行開發(fā)之前,最好能夠通讀一下Linux操作系統(tǒng)下C語言的編程規(guī)范。重點(diǎn)需要關(guān)注的是同自己以前學(xué)的C語言在語法上與編程習(xí)慣上的不同。只有如此,在時候進(jìn)行Linux系統(tǒng)下功能開發(fā)或者嵌入式開發(fā)的時候,才不會磕磕碰碰,可以達(dá)到事半功倍的效果。

二、要想用戶提供詳細(xì)的錯誤信息。

即使是有幾十年編程經(jīng)驗的程序員,在編寫應(yīng)用程序的時候也難免有考慮不周的地方,在程序運(yùn)行時會出現(xiàn)錯誤。又或者在需要用戶提供參數(shù)的地方,用戶沒有提供恰當(dāng)?shù)膮?shù),此時也會導(dǎo)致應(yīng)用程序運(yùn)行錯誤。也就是說,用戶在使用應(yīng)用程序的時候,有可能會出現(xiàn)各種各樣的狀況。那么在應(yīng)用程序開發(fā)的時候,就需要注意收集這些錯誤信息,并將錯誤信息詳細(xì)、清楚的反饋給用戶,讓他們一看到錯誤信息,就知道是什么問題所造成的,該如何去調(diào)整。

如現(xiàn)在系統(tǒng)管理員要編寫一個文件的備份程序。在這個備份程序運(yùn)行的時候,有可能程序備份會失敗。那么可能是什么原因所造成的呢?有可能是執(zhí)行這個備份程序的用戶權(quán)限不夠,無法讀取需要備份的文件或者對于目標(biāo)文件夾沒有寫的權(quán)限。也有可能是目標(biāo)文件夾的容量不夠容納需要備份的文件。又或者是在程序運(yùn)行的過程中被用戶手工強(qiáng)制中斷。如果是異地備份的話,還可能是網(wǎng)絡(luò)的原因所造成的。可見導(dǎo)致這個備份程序運(yùn)行失敗的因素有很多。如果Linux操作系統(tǒng)管理員在開發(fā)這個應(yīng)用程序的時候,只是簡單的提醒這個文件備份成功或者失敗了。在失敗時,沒有指出具體的原因,那么用戶在排除故障原因的時候,不是要對以上各種原因進(jìn)行一一確認(rèn)排除嗎?這顯然會引起用戶的反感。為此在Linux操作系統(tǒng)下進(jìn)行應(yīng)用程序的開發(fā),需要注意同用戶的交互性。特別是當(dāng)應(yīng)用程序運(yùn)行出現(xiàn)問題時,要詳細(xì)的向用戶說明到底是哪個環(huán)節(jié)出現(xiàn)了問題。其實這只是多了幾條代碼而已,沒有多少難度。就拿這個備份程序來說,在讀取文件、保存文件等等都是相對獨(dú)立的工作。在哪個環(huán)節(jié)上出現(xiàn)問題時,就即時的將這個環(huán)節(jié)的名字提示給用戶。如此的話,用戶可以根據(jù)這個錯誤提示迅速定位問題的原因并及時解決掉。但是不少系統(tǒng)程序開發(fā)人員不會如此處理。在程序備份中當(dāng)某個環(huán)節(jié)出現(xiàn)錯誤時,他們只是簡單的拋出一個錯誤指令。然后錯誤處理函數(shù)接受到這個指令后就會提醒用戶文件備份失敗。但是到底是哪個環(huán)節(jié)出現(xiàn)了問題是只字不提,讓用戶自己去研究吧。

筆者是先做系統(tǒng)管理員,然后再進(jìn)入Linux系統(tǒng)程序設(shè)計這個領(lǐng)域的。為此對于應(yīng)用程序過程中拋出的一些模棱兩可的錯誤提示或者千遍一律的程序運(yùn)行失敗之類的錯誤信息是深惡痛絕的。所以筆者要給大家的第二個善意提醒就是,在程序開發(fā)過程中,要多用用系統(tǒng)提供的錯誤函數(shù),盡量向用戶提供詳細(xì)的錯誤信息。最好是用戶一看到錯誤提示就可以找到問題的原因。

三、提高提示信息的可讀性。

當(dāng)應(yīng)用程序在運(yùn)行時,除了要向用戶提供詳細(xì)的錯誤提示信息外,還需要注意這個提示信息的可讀性。特別是有些錯誤信息是操作系統(tǒng)底層拋出的意外,此時Linux操作系統(tǒng)開發(fā)人員最好能夠?qū)⑦@些普通用戶難以閱讀的信息進(jìn)行格式化,將其轉(zhuǎn)換為用戶可以讀的懂的信息。在Linux操作系統(tǒng)中,提供了strerror函數(shù)和sys_errlist消息字符串?dāng)?shù)組,專門用來格式化各種形式的錯誤消息,以提高錯誤提示信息的可讀性。如使用這個strerror函數(shù)可以將一些對用戶沒有什么實際含義的錯誤代碼轉(zhuǎn)換成語言相關(guān)的錯誤消息字符串,同時返回指向這個字符串的指針。顯然讀這些語言錯誤信息要比讀哪些錯誤數(shù)字代碼要好的多。

另外,如果一個應(yīng)用程序要調(diào)用其它應(yīng)用程序的話,那么在遇到意外情況時,最好能夠購將在哪個應(yīng)用程序上出現(xiàn)問題也告訴給用戶。如perror函數(shù)可以將語言相關(guān)的消息(包括錯誤消息、警告消息等等)寫入到標(biāo)準(zhǔn)輸入輸出,描述調(diào)用系統(tǒng)函數(shù)或者庫函數(shù)期間遇到的錯誤。這個函數(shù)會輸出參數(shù)字符串、錯誤信息、換行符等等。這里主要需要注意的是,在參數(shù)字符串中,最好能夠帶出出現(xiàn)問題的那個應(yīng)用程序的名字。有時候某個應(yīng)用程序可能會調(diào)用其它的應(yīng)用程序,或者說某個應(yīng)用程序運(yùn)行時最后總共可能會調(diào)用數(shù)十個應(yīng)用程序(包括系統(tǒng)函數(shù)、庫函數(shù)等等)。此時如果系統(tǒng)不向用戶說明到底是哪個程序程序或者系統(tǒng)函數(shù)出現(xiàn)了問題,那么用戶在查找問題的時候會很累,感到無從下手。即使是這個應(yīng)用程序的開發(fā)者,過了一段時間以后遇到這個問題時也可能無所適從。所以說,無論是為了自己,還是為了用戶,最好在perror函數(shù)中包含導(dǎo)致應(yīng)用程序無法運(yùn)行的那個程序的名稱或者代碼。這是對用戶進(jìn)行程序維護(hù)與調(diào)試時最好的教程。

以上三點(diǎn)是Linux操作系統(tǒng)下進(jìn)行程序開發(fā)過程中最基本的要求。像需要了解Linux的系統(tǒng)架構(gòu)、系統(tǒng)函數(shù)、系統(tǒng)接口等等的內(nèi)容筆者就不多說了,因為這些知識是前提.

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 石景山区| 马鞍山市| 龙里县| 双辽市| 教育| 崇礼县| 绥滨县| 屯昌县| 潢川县| 石泉县| 肃宁县| 丰县| 英吉沙县| 永年县| 安新县| 桃源县| 伊宁市| 陆河县| 凌海市| 西畴县| 甘南县| 威信县| 青田县| 徐州市| 安塞县| 凌云县| 思茅市| 延吉市| 杭锦旗| 清徐县| 恩平市| 额尔古纳市| 克什克腾旗| 吉林市| 广平县| 青阳县| 湟源县| 华宁县| 广安市| 治多县| 双鸭山市|