我正在尝试在只有 bash 和原始基本实用程序的系统上执行 ioctl 调用。
有没有什么方法可以在 shell 脚本中执行任意 ioctl 命令(如果参数只是整数)到 /dev 中的特定设备文件,而无需编写 C/perl/python 程序?像“magic_ioctl /dev/console 30 1 2”这样的东西会调用“ioctl(open(“/dev/console”), 30, 1, 2);”。
ioctl
我正是为此目的编写了工具: https ://github.com/jerome-pouiller/ioctl 。
目前,无法将多个参数传递给 ioctl 调用。你有一个有用的例子吗?
如果你想打电话ioctl(open("/dev/console"), 30, 1);
,你可以运行:
ioctl /dev/console 30 -v 1
但是,对于大多数 ioctl,您希望分配一个缓冲区并将指向该缓冲区的指针作为参数传递给 ioctl 调用。在这种情况下,只需忘记-v
. ioctl
将从/向标准输入/输出读取/写入缓冲区内容。ioctl
尝试从 ioctl 编号猜测缓冲区大小和方向。
最好的是:ioctl
了解许多(大约 2200 个)ioctl 符号名称。因此,您可以调用:
ioctl /dev/video0 VIDIOC_QUERYCAP > video_caps
为什么你拒绝 perl/c/python 解决方案?您可以像这样通过 perl one-liner 进行此操作:
perl -e require "sys/ioctl.ph"; ioctl(...);