設置 | 登錄 | 註冊

目前共有4篇帖子。

[有趣的程序]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]$

內容轉換:

回覆帖子
內容:
用戶名: 您目前是匿名發表。
驗證碼:
看不清?換一張
©2010-2025 Purasbar Ver3.0 [手機版] [桌面版]
除非另有聲明,本站採用知識共享署名-相同方式共享 3.0 Unported許可協議進行許可。