/*cdrom.c*/ #include <sys/ioctl.h> #include <linux/cdrom.h> #include <fcntl.h> #define CDROM "/dev/cdrom" /* In all functions 'device' means name of CD-ROM device, * for example /dev/cdrom */ /* Close CD-ROM tray */ int cdclose(char *device) { int fd = open(device, O_RDONLY|O_NONBLOCK); if (fd == -1) return -1; if (ioctl(fd, CDROMCLOSETRAY) == -1) return -1; close(fd); return 0; } /* Eject CD-ROM tray */ int cdeject(char *device) { int fd = open(device, O_RDONLY|O_NONBLOCK); if (fd == -1) return -1; if (ioctl(fd, CDROMEJECT) == -1) return -1; close(fd); return 0; } /* Lock (if lock==1) or unlock (if lock==0) CD-ROM tray */ int cdlock(char *device, int lock) { int fd; fd = open(device, O_RDONLY|O_NONBLOCK); if (fd == -1) return -1; if (ioctl(fd, CDROM_LOCKDOOR, lock) == -1) return -1; close(fd); return 0; } /**********************************************************/ /**********************************************************/ /**********************************************************/ /* Cdrom.i */ %module Cdrom %{ /* Put header files here (optional) */ %} extern int cdclose(char *device); extern int cdeject(char *device); extern int cdlock(char *device, int lock); /**********************************************************/ /**********************************************************/ /**********************************************************/ #cdrom.pl ########################################### #!/usr/bin/perl use Cdrom; #cdclose($device); #cdeject($device); #cdlock($device,$lock); #lock=1 to lock #lock=0 to unlock #cdlock($device,1) $cdrom= '/dev/cdrom'; #$cdrom = '/dev/hdc'; cdeject($cdrom) or die $!; sleep(5); cdclose($cdrom) or die $!; exit (0); ############################################
In reply to cdrom tray control with swig by zentara
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |