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