第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

使用 python 獲取套接字/文件描述符中可用的字節(jié)數(shù)

使用 python 獲取套接字/文件描述符中可用的字節(jié)數(shù)

胡子哥哥 2023-06-27 10:40:54
POSIX Cint bytes_available; ioctl(fd, FIONREAD, &bytes_available);如何在 python 中做同樣的事情?
查看完整描述

1 回答

?
HUX布斯

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個(gè)贊

我認(rèn)為您正在標(biāo)準(zhǔn)庫fcntl.ioctl中尋找該函數(shù),并且它內(nèi)部使用系統(tǒng)調(diào)用。fcntlioctl

從文檔來看,

fcntl.ioctl(fd, request, arg=0, mutate_flag=True)該函數(shù)與 fcntl() 函數(shù)相同,只是參數(shù)處理更加復(fù)雜。

請(qǐng)求參數(shù)僅限于適合 32 位的值。termios可以在module中找到用作請(qǐng)求參數(shù)的其他感興趣的常量,其名稱與相關(guān) C 頭文件中使用的名稱相同。

參數(shù) arg 可以是整數(shù)、支持只讀緩沖區(qū)接口的對(duì)象(如 bytes)或支持讀寫緩沖區(qū)接口的對(duì)象(如 bytearray)之一。

除了最后一種情況外,在所有情況下,行為都與 fcntl() 函數(shù)相同。

如果傳遞可變緩沖區(qū),則行為由 mutate_flag 參數(shù)的值確定。

如果為 false,則忽略緩沖區(qū)的可變性,并且行為與只讀緩沖區(qū)相同,只是避免了上面提到的 1024 字節(jié)限制 - 只要您傳遞的緩沖區(qū)至少與操作系統(tǒng)想要的一樣長放在那里,一切都應(yīng)該正常。

如果 mutate_flag 為 true(默認(rèn)值),則緩沖區(qū)(實(shí)際上)被傳遞給底層 ioctl() 系統(tǒng)調(diào)用,后者的返回代碼被傳回調(diào)用 Python,并且緩沖區(qū)的新內(nèi)容反映了 ioctl 的操作()。這是一個(gè)輕微的簡化,因?yàn)槿绻峁┑木彌_區(qū)小于 1024 字節(jié)長,則首先將其復(fù)制到 1024 字節(jié)長的靜態(tài)緩沖區(qū)中,然后將其傳遞給 ioctl() 并復(fù)制回提供的緩沖區(qū)中。

如果 ioctl() 失敗,則會(huì)引發(fā) OSError 異常。

一個(gè)例子:

>>> import array, fcntl, struct, termios, os

>>> os.getpgrp()

13341

>>> struct.unpack('h', fcntl.ioctl(0, termios.TIOCGPGRP, "? "))[0]?

13341

>>> buf = array.array('h', [0])

>>> fcntl.ioctl(0, termios.TIOCGPGRP, buf, 1)?

0

>>> buf?

array('h', [13341])


查看完整回答
反對(duì) 回復(fù) 2023-06-27
  • 1 回答
  • 0 關(guān)注
  • 164 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)