#includeintioctl(intfd,intrequest,.../*void*arg*/);返回0:成功-1:出錯第三個參數(shù)總">
Linux內(nèi)核的ioctl函數(shù)學(xué)習(xí)

Linux內(nèi)核的ioctl函數(shù)學(xué)習(xí)

ID:39465477

大?。?42.50 KB

頁數(shù):17頁

時間:2019-07-04

Linux內(nèi)核的ioctl函數(shù)學(xué)習(xí)_第1頁
Linux內(nèi)核的ioctl函數(shù)學(xué)習(xí)_第2頁
Linux內(nèi)核的ioctl函數(shù)學(xué)習(xí)_第3頁
Linux內(nèi)核的ioctl函數(shù)學(xué)習(xí)_第4頁
Linux內(nèi)核的ioctl函數(shù)學(xué)習(xí)_第5頁
資源描述:

《Linux內(nèi)核的ioctl函數(shù)學(xué)習(xí)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫

1、本函數(shù)影響由fd參數(shù)引用的一個打開的文件。#include#includeintioctl(intfd,intrequest,.../*void*arg*/);返回0:成功-1:出錯第三個參數(shù)總是一個指針,但指針的類型依賴于request參數(shù)。我們可以把和網(wǎng)絡(luò)相關(guān)的請求劃分為6類:套接口操作文件操作接口操作ARP高速緩存操作路由表操作流系統(tǒng)下表列出了網(wǎng)絡(luò)相關(guān)ioctl請求的request參數(shù)以及arg地址必須指向的數(shù)據(jù)類型:類別Request說明數(shù)據(jù)類型套接SIOCATMARKSIOCSP

2、GRPSI是否位于帶外標(biāo)記設(shè)置套接口intintint口OCGPGRP的進(jìn)程ID或進(jìn)程組ID獲取套接口的進(jìn)程ID或進(jìn)程組ID文FIONBINFIOASYNCFIONRE設(shè)置/清除非阻塞I/O標(biāo)志設(shè)置/清intintintintint件ADFIOSETOWNFIOGETOWN除信號驅(qū)動異步I/O標(biāo)志獲取接收緩存區(qū)中的字節(jié)數(shù)設(shè)置文件的進(jìn)程ID或進(jìn)程組ID獲取文件的進(jìn)程ID或進(jìn)程組IDSIOCGIFCONFSIOCSIFADD獲取所有接口的清單設(shè)置接口structifconfstruct接口RSIOCGIFADDRSIOCSIFFL地址獲取

3、接口地址設(shè)置接口標(biāo)ifreqstructAGSSIOCGIFFLAGSSIOCSI志獲取接口標(biāo)志設(shè)置點到點地ifreqstructFDSTADDRSIOCGIFDSTADD址獲取點到點地址獲取廣播地ifreqstructRSIOCGIFBRDADDRSIOCSI址設(shè)置廣播地址獲取子網(wǎng)掩碼ifreqstructFBRDADDRSIOCGIFNETMAS設(shè)置子網(wǎng)掩碼獲取接口的測度ifreqstructKSIOCSIFNETMASKSIOCGI設(shè)置接口的測度獲取接口MTUifreqstructFMETRICSIOCSIFMETRICS(還有

4、很多取決于系統(tǒng)的實ifreqstructIOCGIFMTUSIOCxxx現(xiàn))ifreqstructifreqstructifreqstructifreqstructifreqstructifreqARPSIOCSARPSIOCGARPSIOCD創(chuàng)建/修改ARP表項獲取ARP表項structarpreqstructARP刪除ARP表項arpreqstructarpreq路由SIOCADDRTSIOCDELRT增加路徑刪除路徑structrtentrystructrtentry流I_xxx套接口操作:明確用于套接口操作的ioctl請求有三

5、個,它們都要求ioctl的第三個參數(shù)是指向某個整數(shù)的一個指針。SIOCATMARK:如果本套接口的的度指針當(dāng)前位于帶外標(biāo)記,那就通過由第三個參數(shù)指向的整數(shù)返回一個非0值;否則返回一個0值。POSIX以函數(shù)sockatmark替換本請求。SIOCGPGRP:通過第三個參數(shù)指向的整數(shù)返回本套接口的進(jìn)程ID或進(jìn)程組ID,該ID指定針對本套接口的SIGIO或SIGURG信號的接收進(jìn)程。本請求和fcntl的F_GETOWN命令等效,POSIX標(biāo)準(zhǔn)化的是fcntl函數(shù)。SIOCSPGRP:把本套接口的進(jìn)程ID或者進(jìn)程組ID設(shè)置成第三個參數(shù)指向的整

6、數(shù),該ID指定針對本套接口的SIGIO或SIGURG信號的接收進(jìn)程,本請求和fcntl的F_SETOWN命令等效,POSIX標(biāo)準(zhǔn)化的是fcntl操作。文件操作:以下5個請求都要求ioctl的第三個參數(shù)指向一個整數(shù)。FIONBIO:根據(jù)ioctl的第三個參數(shù)指向一個0或非0值分別清除或設(shè)置本套接口的非阻塞標(biāo)志。本請求和O_NONBLOCK文件狀態(tài)標(biāo)志等效,而該標(biāo)志通過fcntl的F_SETFL命令清除或設(shè)置。FIOASYNC:根據(jù)iocl的第三個參數(shù)指向一個0值或非0值分別清除或設(shè)置針對本套接口的信號驅(qū)動異步I/O標(biāo)志,它決定是否收取針

7、對本套接口的異步I/O信號(SIGIO)。本請求和O_ASYNC文件狀態(tài)標(biāo)志等效,而該標(biāo)志可以通過fcntl的F_SETFL命令清除或設(shè)置。FIONREAD:通過由ioctl的第三個參數(shù)指向的整數(shù)返回當(dāng)前在本套接口接收緩沖區(qū)中的字節(jié)數(shù)。本特性同樣適用于文件,管道和終端。FIOSETOWN:對于套接口和SIOCSPGRP等效。FIOGETOWN:對于套接口和SIOCGPGRP等效。接口配置:得到系統(tǒng)中所有接口由SIOCGIFCONF請求完成,該請求使用ifconf結(jié)構(gòu),ifconf又使用ifreq結(jié)構(gòu),如下所示:Structifconf

8、{intifc_len;//緩沖區(qū)的大小union{caddr_tifcu_buf;//inputfromuser->kernelstructifreq*ifcu_req;//returnofstructuresretu

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。