CDROMドライブのeject

会社に

Linuxカーネル徹底理解 (日経BPパソコンベストムック)

Linuxカーネル徹底理解 (日経BPパソコンベストムック)

という本があったので年末年始の暇つぶしに借りて読んでいます.

その中のサンプルコードで、CDROMドライブのejectを行うコードが載っていました。最近それらしいことをしていないので久しぶりにやってみました(全体的に好みに合わせて変更してます)。

#include <stdio.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <linux/cdrom.h>

int main(int argc, char *argv[])
{
    int fd;
    if ((fd = open("/dev/cdrom", O_RDONLY | O_NONBLOCK)) < 0) perror("open");
    if (ioctl(fd, CDROMEJECT, 0) < 0) perror("ioctl");
    close(fd);
    return(0);
}

で実行すると、CDROMドライブがejectします。知らない人にやってみると結構びっくりしてもらえるかも。