So erkennen Sie, wann die Schublade eines DVD-Laufwerks geöffnet wird

So erkennen Sie, wann die Schublade eines DVD-Laufwerks geöffnet wird

Ich wurde aufgefordert, ein Skript zu schreiben, um mein unbutu DVD-Laufwerk zu schließen, wenn es geöffnet wird, und um es zu schließen, verwende ich einfach den Befehl

eject -t

aber ich kann keine Dokumentation dazu finden, wie man erkennt, wann das Laufwerk geöffnet wird...

Gibt es eine Möglichkeit, in Ubuntu zu erkennen, wann die Schublade des DVD-Laufwerks geöffnet wird?

Antwort1

Die Lösung ist im Wesentlichen enthaltenHier. In/usr/include/linux/cdrom.hSie finden allesioctl()für die CD-ROM,

#define CDROM_DRIVE_STATUS      0x5326  /* Get tray position, etc. */

Ein Code-Schnipsel, der dies für Sie zurückgibt, ist:

 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 */
 }

Der entscheidende Punkt ist natürlich CDS_TRAY_OPEN.

verwandte Informationen