  | 
      
        
          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]$ 
 
  
       |