POSIX определяет только очень ограниченное подмножество ioctl()
функций, связанных с STREAMS. Поскольку средство STREAMS устарело, интерфейс к нему также устарел в POSIX.
Тем не менее, ioctl()
был частью Unix «навсегда» (оно определенно было в 7-й редакции UNIX, и я вполне уверен, что даже тогда это не было чем-то новым). Это «способ» управления драйверами устройств после их открытия. Единственная проблема заключается в том, что такие интерфейсы и элементы управления не стандартизированы.
Вы можете взглянуть на файлы <termios.h>
для набора функций, написанных для управляющих терминалов. Я ожидаю, что типичная реализация использует ioctl()
или другие подобные специализированные механизмы, но интерфейс стал общим, когда он был стандартизирован (интерфейс <termios.h>
не идентичен ни одному из более ранних интерфейсов, ни 7-го издания, ни System III, ни любого другого интерфейса). Если вы хотите, вы можете написать стандартные функции поверх вашего ioctl()
интерфейса, которые будут использовать ваши пользователи; вы бы реализовали эти функции для вызова вашего интерфейса ioctl()
.
Итак, ioctl()
не уходит; это правильный способ управления драйверами устройств. У POSIX несколько иная повестка дня, вот и все.
person
Jonathan Leffler
schedule
03.09.2011