自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

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

一、要注意與C語(yǔ)言的差異。

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

  int main (int argc,char** argv)

  printf(“Welcome!Linux!\n);

  return 0;

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

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

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

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

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

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

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

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

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

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

【相關(guān)文章】

責(zé)任編輯:龐桂玉 來源: IT168
相關(guān)推薦

2009-06-23 18:13:21

2009-12-17 14:56:32

Linux程序設(shè)計(jì)

2017-08-30 17:59:20

Linux程序設(shè)計(jì)優(yōu)化措施

2013-12-12 16:30:20

Lua腳本語(yǔ)言

2009-12-25 09:50:14

Linux的Shell編程Shell程序設(shè)計(jì)

2009-12-04 10:53:06

VS WEB

2010-12-28 10:12:39

PHP

2011-07-05 16:05:43

面向?qū)ο缶幊?/a>

2011-07-22 13:41:57

java

2011-07-05 15:22:04

程序設(shè)計(jì)

2011-07-05 15:59:57

面向?qū)ο缶幊?/a>

2010-07-13 10:33:49

Perl用戶函數(shù)

2022-06-07 14:13:58

Simula編程語(yǔ)言GNU cim

2013-03-18 10:19:41

程序設(shè)計(jì)語(yǔ)言

2022-03-24 09:44:54

TypeScriptSOLID

2010-09-17 09:08:49

Java多線程

2011-05-03 09:25:39

程序設(shè)計(jì)

2009-06-22 14:03:00

java教材程序設(shè)計(jì)

2011-04-22 17:00:12

程序設(shè)計(jì)

2017-09-05 08:16:29

代碼判斷函數(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)