作者共发了4篇帖子。 内容转换:不转换▼
 
点击 回复
392 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)
 

本帖信息

点击数:392 回复数:3
评论数: ?
作者:巨大八爪鱼
最后回复:巨大八爪鱼
最后回复时间:2015-7-15 22:24
 
©2010-2024 Arslanbar Ver2.0
除非另有声明,本站采用知识共享署名-相同方式共享 3.0 Unported许可协议进行许可。