如何在shell脚本中调用ioctl?

时间:2011-11-10 15:53:24

标签: bash shell ioctl

我正在尝试在只有bash和原始基础实用程序的系统上执行ioctl调用。

有没有办法在shell脚本中的/ dev中执行任意ioctl命令(如果params只是整数),而不编写C / perl / python程序?就像是  “magic_ioctl / dev / console 30 1 2”将调用“ioctl(open(”/ dev / console“),30,1,2);”。

2 个答案:

答案 0 :(得分:7)

我为此专门编写了ioctl工具:https://github.com/jerome-pouiller/ioctl

目前,无法将多个参数传递给ioctl调用。你有一个有用的例子吗?

如果您想致电ioctl(open("/dev/console"), 30, 1);,可以运行:

ioctl /dev/console 30 -v 1

但是,对于大多数ioctl,您希望分配一个缓冲区并在ioctl调用的参数中将指针传递给此缓冲区。在这种情况下,请忘记-vioctl将从/向标准输入/输出读/写缓冲区内容。 ioctl尝试从ioctl数字中猜测缓冲区大小和方向。

最好的是:ioctl了解许多(约2200个)ioctl符号名称。因此,您可以致电:

ioctl /dev/video0 VIDIOC_QUERYCAP > video_caps

答案 1 :(得分:6)

为什么拒绝perl / c / python解决方案? 你可以通过perl one-liner这样做: perl -e require "sys/ioctl.ph"; ioctl(...);