POSIX definisce solo un sottoinsieme molto limitato della funzionalità ioctl()
, quella relativa a STREAM. Poiché la funzione STREAMS è obsoleta, l'interfaccia ad essa è anche obsoleta in POSIX.
Tuttavia, ioctl()
è stato parte di Unix da "per sempre" (era certamente nella settima edizione di UNIX e sono certo che non era nuovo nemmeno allora). È 'il modo' per controllare i driver di periferica dopo che sono aperti. L'unico problema è che tali interfacce e controlli non sono standardizzati.
È possibile dare un'occhiata ai file <termios.h>
per un insieme di funzioni scritte sui terminali di controllo. Mi aspetto che l'implementazione tipica utilizzi lo ioctl()
o altri meccanismi specializzati simili, ma l'interfaccia è stata resa generale quando è stata standardizzata (l'interfaccia <termios.h>
non è identica a nessuna interfaccia precedente, né la 7a Edizione né il Sistema III o qualsiasi altra interfaccia). Se lo si desidera, è possibile scrivere funzioni standard in cima all'interfaccia ioctl()
che gli utenti useranno; implementeresti tali funzioni per chiamare l'interfaccia ioctl()
.
Quindi, ioctl()
non sta andando via; è il modo corretto di controllare i driver di dispositivo. POSIX ha un programma leggermente diverso, tutto qui.
fonte
2011-09-03 17:51:43
Per espandere su questo, l'eliminazione di POSIX di 'ioctl' non indica che' ioctl' non dovrebbe essere usato, ma piuttosto che POSIX non è interessato a specificare come i dispositivi hardware dovrebbero funzionare. Poiché 'ioctl' era anche usato con STREAMS, POSIX precedentemente specificato * solo quell'aspetto * di' ioctl' (nessun altro uso con i dispositivi), ma ora che gli STREAM sono obsoleti, non rimane nulla da specificare. –
Grazie - sì, è esattamente ciò che intendevo. –
ioctl() va indietro ... personalmente l'ho usato negli anni '80. Mentre i manuali System V del 1983 descrivono ancora ioctl() lo sporco reale su come usarlo è stato trovato nei file .h e nei manuali tecnici. Ti esorto a inserire tutti i dettagli sui TUO ioctl nel file .h del dispositivo per assicurarti che sia sempre disponibile per gli sviluppatori. – Gilbert