如何将指向整数的指针传递给 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)
然后代码就可以工作了。
我正在尝试通过 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)
然后代码就可以工作了。