freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

嵌入式系統(tǒng)程序設(shè)計(jì)-資料下載頁(yè)

2025-07-18 23:34本頁(yè)面
  

【正文】 goodbye everybody. \n)。 return 0。 } E. strerror函數(shù) ? strerror函數(shù)返回一個(gè)指向字符串的指針,該字符串描述了和 errnum相對(duì)應(yīng)的錯(cuò)誤信息,如把errnum傳遞給 strerror,則可得到此信息。 ? 函數(shù)原型: include char* strerror(int errnum)。 F. perror函數(shù) ? perror函數(shù)輸出系統(tǒng)錯(cuò)誤信息。 ? 函數(shù)原型: include include void perror(const char *s)。 ? 如果系統(tǒng)調(diào)用失敗,一般會(huì)設(shè)置 errno。 perror()函數(shù)首先打印字符串參數(shù) s,然后添加一個(gè)冒號(hào)和一個(gè)空格,然后是對(duì)應(yīng)于 errno的錯(cuò)誤信息和一個(gè)換行符。 F. perror函數(shù)(續(xù)) ? 以下兩行等價(jià): perror( “something error”)。 printf(“something error: %s”,strerror(errno))。 ? perror與 strerror的比較 ? 前者短小精干,完全能應(yīng)付一般使用。 ? 后者可以對(duì)錯(cuò)誤信息再編輯,可以應(yīng)用于需要精心設(shè)計(jì)的場(chǎng)合 【 例 322】 /* */ include include include include include int main(void) { FILE *fp。 char* p。 errno=0。 fp=fopen(notexist,r)。 if(errno) perror(Open file)。 ~/exp/error/ 【 例 322】 (續(xù)) errno=0。 fp=fopen(notexist,r)。 if(errno) { p=strerror(errno)。 fprintf(stderr, Open file: %s\n, p)。 } return 0。 } ~/exp/error/ 二、系統(tǒng)日志文件 ? Linux的兩個(gè)系統(tǒng)守護(hù)進(jìn)程 klogd和syslogd提供了集中的系統(tǒng)日志功能。 ? klogd供內(nèi)核和運(yùn)行在內(nèi)核空間的程序,特別是設(shè)備驅(qū)動(dòng)程序使用。 ? syslogd控制著來(lái)自用戶空間的消息的產(chǎn)生。 日志消息的優(yōu)先級(jí) ?寫(xiě)入系統(tǒng)日志的消息由它的級(jí)別( level)和功能( facility)來(lái)控制。 ?級(jí)別指出了消息的重要程度和嚴(yán)重性 ?功能告訴 syslogd守護(hù)進(jìn)程是哪個(gè)程序發(fā)出的消息。 ?一條日志消息優(yōu)先級(jí)由級(jí)別和功能共同組成 syslog的日志級(jí)別: level 級(jí)別 嚴(yán)重性 LOG_EMERG 系統(tǒng)不可用 LOG_ALERT 要求立刻處理 LOG_CRIT 重大錯(cuò)誤,比如硬盤(pán)故障 LOG_ERR 錯(cuò)誤條件 LOG_WARNING 警告錯(cuò)誤 LOG_NOTICE 正常但重要的消息 LOG_INFO 純粹的通報(bào)消息 LOG_DEBUG 調(diào)試跟蹤輸出 syslog的功能值: facility 功能 消息源 LOG_AUTHPRIV 私有的安全和授權(quán)消息 LOG_CRON 時(shí)鐘守護(hù)進(jìn)程( crond和 atd) LOG_DAEMON 其他系統(tǒng)守護(hù)進(jìn)程 LOG_KERN 內(nèi)核消息 LOG_LOCAL[07] 為本地 /站點(diǎn)使用而保留 LOG_LPR 打印機(jī)子系統(tǒng) LOG_MAIL 郵件子系統(tǒng) LOG_NEWS 新聞組子系統(tǒng) LOG_SYSLOG syslogd產(chǎn)生的內(nèi)部消息 LOG_USER 一般用戶級(jí)消息(默認(rèn)) LOG_UUCP uucp子系統(tǒng) 發(fā)送消息的原則 ?選取與消息內(nèi)容相適應(yīng)的級(jí)別值。 ?對(duì)于用戶級(jí)程序, LOG_WARNING已經(jīng)足夠了 ?更高級(jí)別的的消息只有在出現(xiàn)嚴(yán)重問(wèn)題是才發(fā)送,系統(tǒng)默認(rèn)的的級(jí)別是 LOG_INFO。 系統(tǒng)日志函數(shù) ?頭文件 函數(shù)。 ? syslog() ? openlog() ? closelog() ? setlogmask() A. syslog()函數(shù) ?用途:產(chǎn)生一條消息。 ?函數(shù)原型: ? priority代表級(jí)別,是功能的 “ 或 ” 值 ? farmat是寫(xiě)入日志的消息,采用類(lèi)似于printf的格式控制方式。 ? %m表示由 strerror為 errno分配的錯(cuò)誤消息。 void syslog(int priority, char *farmat, … ) 舉例: 在 /var/log/messages中會(huì)產(chǎn)生如下消息: syslog(LOG_NOTICE | LOG_USER, error happened, %m\n )。 Sep 22 13:33:55 lxc : error happened, ***** B. openlog()函數(shù) ?功能: ? 打開(kāi)一個(gè)日志文件, syslog()函數(shù)可以向其中寫(xiě)入消息,不返回文件描述符(與 open()不一樣) ?格式: ? message是指定加到日志中的字符串 ? option是選項(xiàng)的 “ 或 ” 值,見(jiàn)下頁(yè) ? facility是 “ 功能表 ” 中的某個(gè)值。 void openlog(const char*message, int option, int facility) openlog的選項(xiàng) 選項(xiàng) 描述 LOG_PID 在每條消息中包含 PID(進(jìn)程號(hào)) LOG_CONS 如果消息不能寫(xiě)入日志文件,則發(fā)到控制臺(tái) LOG_NDELAY 立即打開(kāi)連接(默認(rèn)是在 syslog第一次被調(diào)用時(shí)才打開(kāi)連接) LOG_PERROR 把消息寫(xiě)入日志文件的同時(shí)也輸入到 stderr 注: openlog是可選的,如果不顯式調(diào)用它,則在第一次調(diào)用syslog時(shí), syslog函數(shù)會(huì)自動(dòng)調(diào)用 openlog。 openlog(just try, LOG_PID, LOG_USER)。 syslog(LOG_NOTICE, the current number is %d\n, iNum )。 代碼在 /var/log/messages文件中產(chǎn)生如下信息: Sep 22 21:20:22 lxc just try[2432]: the current number is 5 openlog舉例 C. closelog()函數(shù) ?用途: ? 關(guān)閉由 openlog打開(kāi)的文件描述符。 ?函數(shù)原型: ? void closelog(void)。 D. setlogmask()函數(shù) ? 用途:為所有的日志消息設(shè)置默認(rèn)的級(jí)別。 syslog拒絕任何沒(méi)有在掩碼中設(shè)置的優(yōu)先級(jí)的消息。 ? 函數(shù)原型: int setlogmask(int priority)。 參數(shù) priority可以是單個(gè)的優(yōu)先級(jí),也可以是一個(gè)優(yōu)先級(jí)的范圍。這里有兩個(gè)宏: LOG_MASK(int priority):創(chuàng)建一個(gè)僅由一個(gè)優(yōu)先級(jí)級(jí),priority代表優(yōu)先級(jí)別。 LOG_UPTO(int priority):創(chuàng)建優(yōu)先級(jí)范圍, priority代表其中的最低優(yōu)先級(jí),并作為參數(shù)傳給該宏 【 例 323】 /* */ include include include include include int main() { int mask。 time_t rawtime。 struct tm * timeinfo。 char c[100]。 openlog(test:, LOG_PID, LOG_USER)。 time ( amp。rawtime )。 【 例 323】 (續(xù)) timeinfo = localtime ( amp。rawtime )。 syslog(LOG_INFO, The current date/time is: %s\n, asctime(timeinfo))。 getcwd(c,sizeof(c))。 syslog(LOG_INFO, you are in the direcory: %s\n, c)。 closelog()。 mask=setlogmask(LOG_UPTO(LOG_NOTICE))。 syslog(LOG_INFO, LOG_INFO is inferior to LOG_NOTICE.\n)。 syslog(LOG_DEBUG, LOG_DEBUG is inferior to LOG_NOTICE.\n)。 syslog(LOG_NOTICE, you can see the notice. \n)。 ~/exp/vmlinux/ 【 例 323】 (續(xù)) setlogmask(mask)。 syslog(LOG_INFO, restore the old log level. \n)。 syslog(LOG_DEBUG, the debug information.\n)。 return 0。 } ~/exp/vmlinux/ 運(yùn)行結(jié)果 ? 用命令: tail 10 /var/log/message得到后10行,如下圖 嵌入式 C程序架構(gòu) ?嵌入式 C程序 ?人機(jī)界面 ?指針的使用方法 一、嵌入式 C程序 ?模塊 ?任務(wù)模式 ?面向?qū)ο蟮?C 模塊 ?模塊是指完成某個(gè)功能或某些聯(lián)系緊密的功能的代碼,一般由一個(gè)源文件(擴(kuò)展名為 c)和一個(gè)頭文件(擴(kuò)展名為 h)組成 . ?源文件中一般包含變量的定義、函數(shù)的定義等內(nèi)容。 ?頭文件中一般包含對(duì)應(yīng)源文件中的函數(shù)的聲明及變量的聲明。 ?頭文件中不應(yīng)該包含導(dǎo)致內(nèi)存分配的語(yǔ)句,如定義變量。定義變量會(huì)產(chǎn)生內(nèi)存分配的操作。 一個(gè)不好的例子 /**/ int a = 2。 /*test1 .c*/ include …… /*test2 .c*/ include …… /*test3 .c*/ include …… 一個(gè)好的例子 /**/ extern int a = 2。 /*test1 .c*/ include …… /*test2 .c*/ include …… /*test3 .c*/ include …… 任務(wù)模式 ?早期嵌入式系統(tǒng)中沒(méi)有操作系統(tǒng)的概念,程序員直接面向裸機(jī)編寫(xiě)程序,程序的結(jié)構(gòu)通常分為兩部分:前臺(tái)程序和后臺(tái)程序。 ? 前臺(tái)程序一般為無(wú)限循環(huán)結(jié)構(gòu),根據(jù)相關(guān)標(biāo)志位來(lái)決定是否執(zhí)行某段子程序。 ? 后臺(tái)程序負(fù)責(zé)檢查每個(gè)任務(wù)是否具備執(zhí)行的條件,并據(jù)此設(shè)置相應(yīng)標(biāo)志位。 無(wú)限循環(huán)的兩種方案 1. while(1) { } 2. for(。) { } 好:一目了然 不好:含義不明確 任務(wù)模式(續(xù)) ?隨著大規(guī)模集成電路技術(shù)的發(fā)展,單個(gè)芯片內(nèi)集成的晶體管數(shù)目越來(lái)越多,從而使得芯片的功能不斷增強(qiáng),出現(xiàn)了各種復(fù)雜而強(qiáng)大的嵌入式處理器,處理器內(nèi)一般集成了ROM、 RAM等存儲(chǔ)器和多種功能部件以及接口,如果有一個(gè)操作系統(tǒng)來(lái)控制和管理硬件,使程序員從底層編程中解放出來(lái),從而專(zhuān)注于具體的應(yīng)用,就可以顯著提高開(kāi)發(fā)效率。目前高端處理器一般都先運(yùn)行一個(gè)嵌入式操作系統(tǒng),然后在此操作系統(tǒng)之上開(kāi)發(fā)各種應(yīng)用程序。 任務(wù)模式(續(xù)) ?隨著半導(dǎo)體技術(shù)發(fā)展,嵌入式處理器的硬件資源逐漸豐富,運(yùn)行速度不斷提高,功能越來(lái)越強(qiáng)大,應(yīng)用環(huán)境越來(lái)越復(fù)雜,此時(shí),僅僅基于硬件直接編寫(xiě)程序越來(lái)越困難,在這個(gè)背景下,實(shí)時(shí)操作系統(tǒng)應(yīng)運(yùn)而生。 任務(wù)模式(續(xù)) ?實(shí)時(shí)操作系統(tǒng) (RTOS)是嵌入式應(yīng)用軟件的基礎(chǔ)和開(kāi)發(fā)平臺(tái)。它包括一個(gè)可靠性很高的實(shí)時(shí)內(nèi)核,將 CPU時(shí)間、中斷、 I/O、定時(shí)器等資源都封裝起來(lái),向用戶提供標(biāo)準(zhǔn)的API,并根據(jù)各個(gè)任務(wù)的優(yōu)先級(jí),采用各種任務(wù)調(diào)度算法,合理地在不同任務(wù)之間分配CPU時(shí)間 面向?qū)ο蟮?C ?眾所周知 C語(yǔ)言是面向過(guò)程,并不包含面向?qū)ο蟮奶匦?,無(wú)法使用面向?qū)ο蟪绦蛟O(shè)計(jì)的思路。由于面向?qū)ο蟮膬?yōu)良特性,如果 C語(yǔ)言能具有類(lèi)似的特點(diǎn),無(wú)疑將使程序開(kāi)發(fā)過(guò)程發(fā)生本質(zhì)變化,提高效率。 C語(yǔ)言具有結(jié)構(gòu)體以及指針特性,可以用來(lái)模擬一個(gè) 類(lèi) 。 面向?qū)ο蟮?C(續(xù)) Struct A { int a。 /* 數(shù)據(jù)成員 */ float b。 /* 數(shù)據(jù)成員 */ Struct A *this。 /* this指針 */ void (*f)(
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1