千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  應聘面試  >  物聯(lián)網(wǎng)面試題  > 系統(tǒng)調(diào)用和庫函數(shù)調(diào)用的區(qū)別

系統(tǒng)調(diào)用和庫函數(shù)調(diào)用的區(qū)別

來源:千鋒教育
發(fā)布人:syq
時間: 2022-09-01 15:07:56 1662016076

  1、系統(tǒng)調(diào)用提供的函數(shù)如open, close, read, write, ioctl等,需包含頭文件unistd.h。

系統(tǒng)調(diào)用和庫函數(shù)調(diào)用的區(qū)別

  以write為例:其函數(shù)原型為 size_t write(int fd, const void *buf, size_t nbytes),其操作對象為文件描述符或文件句柄fd(file descriptor),要想寫一個文件,必須先以可寫權限用open系統(tǒng)調(diào)用打開一個文件,獲得所打開文件的fd,例如 fd=open(/"/dev/video/", O_RDWR)。fd是一個整型值,每新打開一個文件,所獲得的fd為當前最大fd加1。

  Linux系統(tǒng)默認分配了3個文件描述符值:0-standard input,1-standard output,2-standard error。

  系統(tǒng)調(diào)用通常用于底層文件訪問(low-level file access),例如在驅(qū)動程序中對設備文件的直接訪問。 系統(tǒng)調(diào)用是操作系統(tǒng)相關的,因此一般沒有跨操作系統(tǒng)的可移植性。

  2、標準C庫函數(shù)提供的文件操作函數(shù)如fopen, fread, fwrite, fclose, fflush, fseek等,需包含頭文件stdio.h。

  以fwrite為例,其函數(shù)原型為size_t fwrite(const void *buffer, size_t size, size_t item_num, FILE *pf),其操作對象為文件指針FILE *pf,要想寫一個文件,必須先以可寫權限用fopen函數(shù)打開一個文件,獲得所打開文件的FILE結(jié)構指針pf,例如pf=fopen(/"~/proj/filename/", /“w/”)。實際上,由于庫函數(shù)對文件的操作最終是通過系統(tǒng)調(diào)用實現(xiàn)的,因此,每打開一個文件所獲得的FILE結(jié)構指針都有一個內(nèi)核空間的文件描述符fd與之對應。

  同樣有相應的預定義的FILE指針:stdin-standard input,stdout-standard output,stderr-standard error。

  庫函數(shù)調(diào)用通常用于應用程序中對一般文件的訪問。 庫函數(shù)調(diào)用是系統(tǒng)無關的,因此可移植性好。 由于庫函數(shù)調(diào)用是基于C庫的,因此也就不可能用于內(nèi)核空間的驅(qū)動程序中對設備的操作

  總結(jié):

  應用程序可以調(diào)用系統(tǒng)調(diào)用,或者庫函數(shù),而很多庫函數(shù)則會調(diào)用系統(tǒng)調(diào)用。

  另一個系統(tǒng)調(diào)用和庫函數(shù)之間的差別是:系統(tǒng)調(diào)用通常提供一種最小界面,而庫函數(shù)通常提供比較復雜的功能。

  更多關于物聯(lián)網(wǎng)培訓的問題,歡迎咨詢千鋒教育在線名師。千鋒教育擁有多年IT培訓服務經(jīng)驗,采用全程面授高品質(zhì)、高體驗培養(yǎng)模式,擁有國內(nèi)一體化教學管理及學員服務,助力更多學員實現(xiàn)高薪夢想。

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內(nèi)將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
物聯(lián)網(wǎng)公司面試題:保障物聯(lián)網(wǎng)安全的措施有哪些?

題目:請談談您對物聯(lián)網(wǎng)安全的理解,以及在物聯(lián)網(wǎng)系統(tǒng)中保障安全性的措施。回答:物聯(lián)網(wǎng)安全是指在物聯(lián)網(wǎng)系統(tǒng)中保護設備、數(shù)據(jù)和通信免受未經(jīng)授...詳情>>

2023-07-26 11:59:27
物聯(lián)網(wǎng)中的邊緣計算是什么?請解釋其優(yōu)勢和應用場景

答案:邊緣計算是一種將計算和數(shù)據(jù)處理能力移動到物聯(lián)網(wǎng)設備附近的計算模型。在邊緣計算中,數(shù)據(jù)的處理和分析發(fā)生在接近數(shù)據(jù)源的設備或邊緣節(jié)點...詳情>>

2023-07-18 14:15:00
可以介紹一下js的內(nèi)部Date對象功能嗎

提供了操作時間和日期的方法擁有一系列屬性和方法,可以用來獲取系統(tǒng)當前時間或者設置 Date 對象中的時間 通過 getTime()方法可返回距 1970 年 ...詳情>>

2023-01-21 15:51:32
為什么需要三次握手,兩次不行嗎?

弄清這個問題,我們需要先弄明白三次握手的目的是什么,能不能只用兩次握手來達到同樣的目的?!〉谝淮挝帐郑嚎蛻舳税l(fā)送網(wǎng)絡包,服務端收到了。...詳情>>

2022-10-25 16:55:00
什么是半連接隊列?

服務器第一次收到客戶端的 SYN 之后,就會處于 SYN_RCVD 狀態(tài),此時雙方還沒有完全建立其連接,服務器會把此種狀態(tài)下請求連接放在一個隊列里,...詳情>>

2022-10-25 16:55:00
快速通道