国产精品久久国产精麻豆99网站,激烈18禁高潮视频免费,老师含紧一点h边做边走视频动漫,双乳被一左一右的吸着

Linux下應用開發(fā)基礎知識大總結(linux應用開發(fā)入門)

應用程序開發(fā)方式

Linux下應用開發(fā)基礎知識大總結(linux應用開發(fā)入門)

在Linux下開發(fā)應用程序可以調用兩種接口來實現,一種是直接調用系統調用接口,另一種是調用庫函數來實現。

1、什么是系統調用?

系統調用(System Call)是操作系統提供的服務,是應用程序與內核通信的接口。Linux提供的系統調用包含的內容有:文件操作、進程控制、系統控制、內存管理、網絡管理、socket套接字、進程間通信、用戶管理等。

Linux下應用開發(fā)基礎知識大總結(linux應用開發(fā)入門)Linux下應用開發(fā)基礎知識大總結(linux應用開發(fā)入門)Linux下應用開發(fā)基礎知識大總結(linux應用開發(fā)入門)Linux下應用開發(fā)基礎知識大總結(linux應用開發(fā)入門)

相對于普通的函數調用來說, 系統調用的性能消耗也是巨大的。 所以在追求極致性能的程序中, 都在盡力避免系統調用。

2、C庫函數

C標準庫頭文件如下:

Linux下應用開發(fā)基礎知識大總結(linux應用開發(fā)入門)

Linux環(huán)境下, 使用的C庫一般都是glibc, 它封裝了幾乎所有的系統調用, 代碼中使用的“系統調用”, 實際上就是調用C庫中的函數。 因為C庫函數通過系統調用來實現,庫函數對上層提供了C庫接口。比如文件操作:

Linux下應用開發(fā)基礎知識大總結(linux應用開發(fā)入門)

實例:文件操作

Linux下文件操作應用程序結構如下:

Linux下應用開發(fā)基礎知識大總結(linux應用開發(fā)入門)

Linux下,“一切皆文件”。為了使不同的文件系統共存, Linux 內核在用戶層與具體文件系統之前增加了虛擬文件系統(VFS)中間層,它對復雜的系統進行抽象化,對用戶提供了統一的文件操作接口。

1、文件操作:系統調用

(1)實操

代碼:

/* 文件操作:系統調用 */#include <sys/stat.h>#include <unistd.h>#include <fcntl.h>#include <stdio.h>#include <stdlib.h>int main(void){ int fd;               /* 文件描述符 */ char rd_buf[50] = {0}; /* 讀數據buf */ /* 以讀寫的方式打開文件demo0_test,若文件不存在則創(chuàng)建文件 */ fd = open("demo0_test", O_RDWR|O_CREAT|O_TRUNC, S_IRWXU); if (NULL == fd) { printf("Open file error!n"); return 0; } /* 往文件中寫數據 */ write(fd, "helllo worldn", strlen("helllo worldn")); /* 移動文件指針至文件開頭 */ lseek(fd, 0, SEEK_SET); /* 讀出文件數據并打印 */ read(fd, rd_buf, 50); printf("Read data: %sn", rd_buf); /* 關閉文件 */ close(fd); return 0;}

運行結果:

Linux下應用開發(fā)基礎知識大總結(linux應用開發(fā)入門)

(2)接口說明

open函數:

Linux下應用開發(fā)基礎知識大總結(linux應用開發(fā)入門)

? pathname:要打開或創(chuàng)建的文件名;

? flag:指定文件的打開方式,具體有以下參數,見下表 flag 參數值。

Linux下應用開發(fā)基礎知識大總結(linux應用開發(fā)入門)

? mode:當 open 函數的 flag 值設置為 O_CREAT 時,必須使用 mode 參數來設置文件與用戶相關的 權限。 mode 可用的權限如下表所示,表中各個參數可使用” | “來組合。

Linux下應用開發(fā)基礎知識大總結(linux應用開發(fā)入門)

read函數:

Linux下應用開發(fā)基礎知識大總結(linux應用開發(fā)入門)

? fd:文件對應的文件描述符 ;

? buf:指向數據緩沖區(qū)的指針;

? count:讀取多少個字節(jié)的數據。

write函數:

Linux下應用開發(fā)基礎知識大總結(linux應用開發(fā)入門)

? fd:文件對應的文件描述符;

? buf:指向數據緩沖區(qū)的指針;

? count:往文件中寫入多少個字節(jié)。

close函數:

Linux下應用開發(fā)基礎知識大總結(linux應用開發(fā)入門)

關閉 fd 文件描述符對應的文件。

lseek 函數:

Linux下應用開發(fā)基礎知識大總結(linux應用開發(fā)入門)

lseek 函數可以用與設置文件指針的位置,并返回文件指針相對于文件頭的位置。 其中的 offset 參數用于指定位置, whence 參數則定義了 offset 的意義, whence 的可取值如下:

? SEEK_SET: offset 是一個絕對位置。

? SEEK_END: offset 是以文件尾為參考點的相對位置。

? SEEK_CUR: offset 是以當前位置為參考點的相對位置。

2、文件操作:C庫函數

(1)實操

代碼:

/* 文件操作:c庫函數 */#include <stdio.h>#include <stdlib.h>?int main(void){ FILE *fp;           /* 文件描述符 */ char rd_buf[50] = {0}; /* 讀數據buf */ /* 以讀寫的方式打開文件demo1_test,若文件不存在則創(chuàng)建文件 */ fp = fopen("demo1_test", "w "); if (NULL == fp) { printf("Open file error!n"); return 0; } /* 往文件中寫數據 */ fwrite("hello worldn", 1, strlen("helllo worldn"), fp); /* 同步緩沖區(qū):把緩沖區(qū)數據立即寫入文件 */ fflush(fp); /* 移動文件指針至文件開頭 */ fseek(fp, 0, SEEK_SET); /* 讀出文件數據并打印 */ fread(rd_buf, 50, 1, fp); printf("Read data: %sn", rd_buf); /* 關閉文件 */ fclose(fp); return 0;}

運行結果:

Linux下應用開發(fā)基礎知識大總結(linux應用開發(fā)入門)

(2)接口說明

fopen函數:

Linux下應用開發(fā)基礎知識大總結(linux應用開發(fā)入門)

? pathname 參數用于指定要打開或創(chuàng)建的文件名。

? mode 參數用于指定文件的打開方式,注意該參數是一個字符串,輸入時需要帶雙引號:

?“r”:以只讀方式打開,文件指針位于文件的開頭。

?“r ”:以讀和寫的方式打開,文件指針位于文件的開頭。

?“w”:以寫的方式打開,不管原文件是否有內容都把原內容清空掉,文件指針位于文件的開頭。

?“w ”:同上,不過當文件不存在時,前面的” w”模式會返回錯誤,而此處的” w ”則會創(chuàng)建新文件。

?“a”:以追加內容的方式打開,若文件不存在會創(chuàng)建新文件,文件指針位于文件的末尾。與” w ”的區(qū) 別是它不會清空原文件的內容而是追加。

?“a ”:以讀和追加的方式打開,其它同上。

? fopen 的返回值是 FILE 類型的文件文件流,當它的值不為 NULL 時表示正常,后續(xù)的 fread、 fwrite 等函數可通過文件流訪問對應的文件。

fopen 的 mode 與 open 的 flags 參數關系:

Linux下應用開發(fā)基礎知識大總結(linux應用開發(fā)入門)

fread 函數:

Linux下應用開發(fā)基礎知識大總結(linux應用開發(fā)入門)

stream 是使用 fopen 打開的文件流, fread 通過它指定要訪問的文件,它從該文件中讀取 nmemb 項數據,每 項的大小為 size,讀取到的數據會被存儲在 ptr 指向的數組中。 fread 的返回值為成功讀取的項數(項的單位 為 size)。

fwrite 函數:

Linux下應用開發(fā)基礎知識大總結(linux應用開發(fā)入門)

它的操作與 fread 相反,把 ptr 數組中的內容寫入到 stream 文件流,寫入的項數為 nmemb,每項大小為size,返回值為成功寫入的項數(項的單位為 size)。

fclose 函數:

Linux下應用開發(fā)基礎知識大總結(linux應用開發(fā)入門)

fclose 庫函數用于關閉指定的文件流,關閉時它會把尚未寫到文件的內容都寫出。因為標準庫會對數據進行緩沖,所以需要使用 fclose 來確保數據被寫出。

fflush 函數:

Linux下應用開發(fā)基礎知識大總結(linux應用開發(fā)入門)

fflush 函數用于把尚未寫到文件的內容立即寫出。常用于確保前面操作的數據被寫入到磁盤上。 fclose 函數本 身也包含了 fflush 的操作。

fseek 函數:

Linux下應用開發(fā)基礎知識大總結(linux應用開發(fā)入門)

其中的 offset 參數用于指定位置, whence 參數則定義了 offset 的意義, whence 的可取值如下:

? SEEK_SET: offset 是一個絕對位置。

? SEEK_END: offset 是以文件尾為參考點的相對位置。

? SEEK_CUR: offset 是以當前位置為參考點的相對位置。

以上就是本次的分享,如有錯誤,歡迎指出!

相關參考書籍:

《Linux環(huán)境編程:從應用到內核》

《野火Linux開發(fā)實戰(zhàn)指南》

《嵌入式Linux上的C語言編程實踐》

版權聲明:本文內容由互聯網用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發(fā)現本站有涉嫌抄襲侵權/違法違規(guī)的內容, 請發(fā)送郵件至 舉報,一經查實,本站將立刻刪除。

免费观看黄网站| eeuss影院www在线观看| 日本a级毛片| 亚洲av无码成人精品国产| 亚洲国产av一区二区三区四区| 日本老年老熟无码| 最近中文字幕高清中文字幕2018| 人妻少妇精品无码专区漫画| 久久精品99国产国产精| 日本高清h色视频在线观看| 中国成熟妇女毛茸茸| 啦啦啦www播放日本观看| 亚洲aaaa级特黄毛片发布| 51精产一二三产区区别| 亚洲啪av永久无码精品放毛片| 亚洲AV无码乱码在线观看四虎| 暖暖爱视频免费| 精品久久久久久亚洲中文字幕| 欧美老熟妇又粗又大| 国产96在线 | 亚洲| 欧美性xxxx极品少妇| 亚洲码欧美码一区二区三区| 国产精品99久久久久久| 老师揉捏爆乳巨胸挤奶视频| 久久天天躁狠狠躁夜夜免费观看| 99久久人妻精品免费二区| 色国产精品一区在线观看| 亚洲日本一线产区二线产区| 久激情内射婷内射蜜桃| 国产成人无码一区二区三区在线| 国产av麻豆mag剧集| 欧美午夜精品久久久久久浪潮 | 暴露放荡的娇妻在公交车上| 亚洲AV无码国产精品久久久不卡 | 成全视频在线观看免费高清| 狠狠躁日日躁夜夜躁2022麻豆| 久久久久99精品成人片三人毛片| 色橹橹欧美在线观看视频高清| freezeframe丰满寡妇| 成 人 免费 黄 色 网站视频| 欧美 变态 另类 人妖|