
Fui desafiado a escrever um script para fechar minha unidade de DVD unbutu quando ela abrir, e para fechá-la basta usar o comando
eject -t
mas não consigo encontrar nenhuma documentação sobre como detectar quando a unidade abre....
Existe alguma maneira de detectar quando a gaveta da unidade de DVD abre no Ubuntu?
Responder1
A solução está basicamente contidaaqui. Em/usr/include/linux/cdrom.hvocê encontrará tudoioctl()para o CD-ROM,
#define CDROM_DRIVE_STATUS 0x5326 /* Get tray position, etc. */
Um trecho de código retornando isso para você é:
int slot;
ioctl(fd, CDROM_DRIVE_STATUS, slot);
switch(slot) {
case CDS_NO_INFO: ... break;
case CDS_NO_DISC: ... break;
case CDS_TRAY_OPEN: ... break;
case CDS_DRIVE_NOT_READY: ... break;
case CDS_DISC_OK: ... break;
default: /* something else, whichever you like */
}
O ponto chave é, claro, CDS_TRAY_OPEN.