Ответ 1
Почему вы отказываетесь от решений perl/c/python?
Вы можете сделать это с помощью perl one-liner следующим образом:
perl -e require "sys/ioctl.ph"; ioctl(...);
Я пытаюсь выполнить вызов ioctl в системе только с bash и примитивными базовыми утилитами.
Есть ли способ выполнить произвольную команду ioctl (если параметры просто целые) в конкретный файл устройства в /dev в оболочке script без написания программ C/perl/python? Что-то вроде "magic_ioctl/dev/console 30 1 2", который будет называть "ioctl (open (" /dev/console "), 30, 1, 2);.
Почему вы отказываетесь от решений perl/c/python?
Вы можете сделать это с помощью perl one-liner следующим образом:
perl -e require "sys/ioctl.ph"; ioctl(...);
Я написал инструмент 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