當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python fcntl.ioctl用法及代碼示例

用法:

fcntl.ioctl(fd, request, arg=0, mutate_flag=True)

此函數與fcntl() 函數相同,隻是參數處理更加複雜。

request 參數僅限於可以容納 32 位的值。可以在 termios 模塊中找到用作 request 參數的其他感興趣的常量,其名稱與相關 C 頭文件中使用的名稱相同。

參數 arg 可以是整數、支持隻讀緩衝區接口的對象(如 bytes )或支持讀寫緩衝區接口的對象(如 bytearray )之一。

除最後一種情況外,所有行為都與fcntl() 函數相同。

如果傳遞了可變緩衝區,則行為由mutate_flag 參數的值確定。

如果它是假的,緩衝區的可變性被忽略並且行為與隻讀緩衝區一樣,除了上麵提到的 1024 字節限製被避免 - 隻要你傳遞的緩衝區至少與操作係統想要的一樣長放在那裏,事情應該會奏效。

如果 mutate_flag 為真(默認),則緩衝區(實際上)被傳遞給底層的 ioctl() 係統調用,後者的返回碼被傳遞回調用 Python,緩衝區的新內容反映了ioctl() 。這是一個輕微的簡化,因為如果提供的緩衝區長度小於 1024 字節,則首先將其複製到 1024 字節長的靜態緩衝區中,然後將其傳遞給 ioctl() 並複製回提供的緩衝區。

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

一個例子:

>>> 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])

使用參數 fdrequestarg 引發審計事件 fcntl.ioctl

相關用法


注:本文由純淨天空篩選整理自python.org大神的英文原創作品 fcntl.ioctl。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。