 |
1樓
巨大八爪鱼
2015-7-15 22:08
#include <fcntl.h> #include <linux/cdrom.h> #include <stdio.h> #include <sys/ioctl.h> #include <unistd.h>
int main(void) { int fd = open("/dev/cdrom", O_RDONLY | O_NONBLOCK); if (fd == -1) { printf("Failed opening CD-ROM.\n"); return -1; } if (!ioctl(fd, CDROMEJECT, NULL)) printf("Ejected CD-ROM successfully.\n"); else printf("Failed ejecting CD-ROM.\n"); close(fd); return 0; }
|
 |
2樓
巨大八爪鱼
2015-7-15 22:10
由於open光驅時,可能光驅中沒有光盤,因此需要使用O_NONBLOCK選項,否則open會失敗(系統默認為我們打開這個光驅的目的是查看光盤上的文件)
|
 |
3樓
巨大八爪鱼
2015-7-15 22:24
打開光驅,5秒後再自動關閉光驅的程序: #include <fcntl.h> #include <linux/cdrom.h> #include <stdio.h> #include <sys/ioctl.h> #include <unistd.h>
int main(void) { int fd = open("/dev/cdrom", O_RDONLY | O_NONBLOCK); if (fd == -1) { printf("Failed opening CD-ROM.\n"); return -1; } if (!ioctl(fd, CDROMEJECT, NULL)) printf("Ejected CD-ROM successfully.\n"); else printf("Failed ejecting CD-ROM.\n");
sleep(5); if (!ioctl(fd, CDROMCLOSETRAY, NULL)) printf("Closed CD-ROM successfully.\n"); else printf("Failed closing CD-ROM.\n");
close(fd); return 0; }
|
 |
4樓
巨大八爪鱼
2015-7-15 22:24
[octopus@pc3 cdrom]$ ./cdrom Ejected CD-ROM successfully. Closed CD-ROM successfully. [octopus@pc3 cdrom]$
|