一些C函式 嵌入式Linux

2021-09-19 01:10:50 字數 2345 閱讀 1693

1.exit( )電腦函式

函式名: exit()

所在標頭檔案:stdlib.h(如果是」vc6.0「的話標頭檔案為:windows.h)

功 能: 關閉所有檔案,終止正在執行的程序。

exit(1)表示異常退出.這個1是返回給作業系統的。

exit(x)(x不為0)都表示異常退出

exit(0)表示正常退出

exit()的引數會被傳遞給一些作業系統,包括unix,linux,和ms dos,以供其他程式使用。

stdlib.h: void exit(int status);

參 數 : status //程式退出的返回值.

exit()和return的區別:

按照ansi c,在最初呼叫的main()中使用return和exit()的效果相同。

但要注意這裡所說的是「最初呼叫」。如果main()在乙個遞迴程式中,exit()仍然會終止程式;但return將

控制權移交給遞迴的前一級,直到最初的那一級,此時return才會終止程式。return和exit()的另乙個區別

在於,即使在除main()之外的函式中呼叫exit(),它也將終止程式。

_exit()與exit的區別:

標頭檔案:

exit:#include

_exit:#include

_exit()函式:直接使程序停止執行,清除其使用的記憶體空間,並銷毀其在核心中的各種資料結構;

exit()函式則在這些基礎上作了一些包裝,在執行退出之前加了若干道工序。

exit()函式與_exit()函式最大的區別就在於 exit()函式在呼叫 exit 系統呼叫之前要檢查檔案的開啟情況,把檔案緩衝區中的內容寫回檔案。

2.sleep( )電腦函式

函式名: sleep

功 能: 執行掛起一段時間

用 法: void sleep(dword dwmilliseconds);

在vc中使用帶上標頭檔案

#include

( sleep函式存放標頭檔案:winbase.h)

在gcc編譯器中,使用的標頭檔案因gcc版本的不同而不同

#include

sleep()單位為毫秒,sleep()單位為秒(如果需要更精確可以用usleep單位為微秒)

返回值若程序/執行緒掛起到引數所指定的時間則返回0,若有訊號中斷則返回剩餘秒數。

在vc中sleep中的第乙個英文本元為大寫的"s"

在標準c中是sleep, 不要大寫… 下面使用大寫的來說明, 具體用什麼看你用什麼編譯器. 簡單的說vc用sleep, 別的一律使用sleep.

sleep函式的一般形式:

sleep(unsigned long);

其中,sleep()裡面的單位,是以毫秒為單位,所以如果想讓函式滯留1秒的話,應該是sleep(1000);

在linux下,sleep中的「s」不大寫

sleep()單位為秒,usleep()裡面的單位是微秒。在核心中,sleep的實現是由pause函式和alarm函式兩個實現的。

特別注意在codeblocks環境下是無法使用sleep函式的,因為在windows上codeblocks採用mingw(gnu在window環境下的編譯器,可以充分使用 windowsapi)作為編譯器,而在stdlib.h中sleep的說明如下:_crtimp void __cdecl __mingw_nothrow _sleep (unsigned long) _ _mingw_attrib_deprecated;可以認為mingw捨棄了sleep函式,建議用sleep實現sleep。

3.strerror( )

函式名:strerror、_streeor、_wcserror、_wcserror

函式作用:獲取系統錯誤資訊或列印使用者程式錯誤資訊

標頭檔案:#include

4.eintr:linux中函式的返回狀態,在不同的函式中意義不同

write 表示:由於訊號中斷,沒寫成功任何資料

read 表示:由於訊號中斷,沒讀到任何資料

sem_wait 表示:函式呼叫被訊號處理函式中斷

recv 表示: 由於訊號中斷返回,沒有任何資料可用

memset( )函式

函式原型:void *memset(void *s,int ch,size_t n)

memset是計算機中c/c++語言函式。將s所指向的某一塊記憶體中的前n個 位元組的內容全部設定為ch指定的ascii值, 第乙個值為指定的記憶體位址,塊的大小由第三個引數指定,這個函式通常為新申請的記憶體做初始化工作,

作用是在一段記憶體塊中填充某個給定的值,它是對較大的結構體或陣列進行清零操作的一種最快方法

例:對buf[100]j進行清零

memset(&buf,0,sizeof(buf));

Linux嵌入式開發的一些總結

宋立新email zjujoe yahoo.com 做了幾年 linux 底層嵌入式開發,有一些心得,這裡記錄下來,作為進一步學習 linux 之前的乙個總結。daily build nokia microsoft 等,都採用了該機制。是終端產品開發中乙個 best practise.其好處有 構建...

嵌入式中斷服務函式的一些特點

中斷服務程式需要滿足如下要求 1 不能返回值 2 不能向isr傳遞引數 3 isr應該盡可能的短小精悍 4 printf char lpformatstring,函式會帶來重入和效能問題,不能在isr中採用。中斷服務函式的呼叫是硬體級別的,當中斷產生,pc指標強制跳轉到對應的中斷服務函式入口,進入中...

記錄一些嵌入式筆試要點

1 sizeof 字串 有包含 0 而strlen 字串 不包含 0 2 sizeof 對這3種定義的區別在下面的小 中。3 strlen 對這3種定義的結果都是一樣的。如下 include include intmain 小結 sizeof 結果不一樣的原因 1 a和b都是字元陣列,a的大小在賦值...