iotcl предназначен для контроля ввода/вывода и используется для
манипуляций с устройством через файловый дескриптор. Формат ioсtl:
ioctl(unsigned int fd, unsigned int request, unsigned long argument).
Возвращаемое значение есть -1 в случае ошибки, 0 и больше если команда
(request) прошла так же, как другие системные вызовы. Ядро различает
специальные и регулярные файлы. Специальные файлы в основном находятся в /dev
и /proc. Они отличаются от регулярных файлов тем, что прячут свое описание в
драйвер, тогда как регулярные файлы содержат текст или двоичные данные. Эта
философия UNIX, которая позволяет вводить/выводить из любого файла. Но если
вам хочется сделать что-нибудь особенное со специальным файлом, вы можете это
сделать при ioсtl. В основном ioсtl нужен для борьбы со специальными файлами,
но его можно использовать и для обычных.