用法:
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])
使用参数
fd
、request
、arg
引发审计事件fcntl.ioctl
。
相关用法
- Python dict fromkeys()用法及代码示例
- Python frexp()用法及代码示例
- Python functools.wraps用法及代码示例
- Python functools.singledispatchmethod用法及代码示例
- Python float转exponential用法及代码示例
- Python calendar firstweekday()用法及代码示例
- Python fsum()用法及代码示例
- Python float.is_integer用法及代码示例
- Python format()用法及代码示例
- Python calendar formatmonth()用法及代码示例
- Python filecmp.cmpfiles()用法及代码示例
- Python functools.singledispatch用法及代码示例
- Python float()用法及代码示例
- Python fileinput.filelineno()用法及代码示例
- Python fileinput.lineno()用法及代码示例
- Python fileinput.input用法及代码示例
- Python functools.partial用法及代码示例
- Python functools.partialmethod用法及代码示例
- Python fileinput.input()用法及代码示例
注:本文由纯净天空筛选整理自python.org大神的英文原创作品 fcntl.ioctl。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。