目前共有4篇帖子。 內容轉換:不轉換▼
 
點擊 回復
377 3
[有趣的程序]Linux系統下彈出光驅的C程序(已在Fedora22下測試通過)
一派護法 十九級
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]$

回復帖子

內容:
用戶名: 您目前是匿名發表
驗證碼:
(快捷鍵:Ctrl+Enter)
 

本帖信息

點擊數:377 回複數:3
評論數: ?
作者: 巨大八爪鱼
最後回復:巨大八爪鱼
最後回復時間:2015-7-15 22:24
 
©2010-2024 Arslanbar Ver2.0
除非另有聲明,本站採用創用CC姓名標示-相同方式分享 3.0 Unported許可協議進行許可。