gpt4 book ai didi

python - 如何在python中获取结构对象的地址?

转载 作者:行者123 更新时间:2023-11-28 19:25:24 25 4
gpt4 key购买 nike

我正在使用 ioctl 调用在用户空间和内核空间之间进行通信来进行内核模块编程。我计划在 python 中制作用户空间 api。

为了在内核和用户空间之间传递数据,ioctl 调用使用地址,并使用 copy_to_user 或 copy_from_user 复制数据。此处的地址由 unsigned long arg 给出。

int ioctl(struct inode *inode,struct file *filp,unsigned int cmd,unsigned long arg)

在 C 用户空间编程中,传递地址是微不足道的。我想做的是使用 struct python 创建一个与我在内核模块中定义的结构兼容的结构,并使用 fcntl 中的 ioctl 传递填充的 python 结构。 python模块。

这可能吗?如果可能,如何在 ioctl 调用中传递 python 结构的地址?

我不想使用 ctypes,也不想用 c 扩展 python。纯 python 代码,是我想要的。

最佳答案

fcntl docs向您展示如何执行此操作的示例。它们使用 structarray,但您也可以使用纯字符串。如果您传递可变缓冲区并且 mutate_flag 为 True,则实际的后备缓冲区将传递给操作系统调用。如果它是不可变的,则将传递一个副本,并且缓冲区中的结果更改将由调用返回。请参阅 fcntl.ioctl() 的文档.

因此您不必关心支持结构的缓冲区的地址。只需将其作为 structstring 传递即可。

关于python - 如何在python中获取结构对象的地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14458413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com