如何将指向整数的指针传递给 python 中的 ioctl?

How do I pass a pointer to an integer to ioctl in python?

我正在尝试通过 python 使用 V4L2(Linux 的视频)。

V4L2 文档中的示例之一是:

int index;

index = 0;

if (-1 == ioctl(fd, VIDIOC_S_INPUT, &index)) {
    perror("VIDIOC_S_INPUT");
    exit(EXIT_FAILURE);
}

我试过将其翻译成python:

from fcntl import ioctl
import v4l2

with open('/dev/video0') as cam:
  index = 0

  if -1 == ioctl(cam, v4l2.VIDIOC_S_INPUT, index):
    print('failed')
  else:
    print('success', index)

当我 运行 收到错误消息时

OSError: [Error 14] Bad address

我知道不是摄像头,因为我可以成功调用VIDIOC_ENUMINPUT,并得到摄像头的名称。

我知道问题是我要传递 index,它是一个整数而不是指针,那么如何传递一个指针?

答案是使用 v4l2 库中提供的类型

如果我改变

index = 0

index = v4l2.c_int(0)

然后代码就可以工作了。