Управление CDROM на C++
Привет всем!
есть программа:
#include <stdio.h>
#include <sys/types.h>
#include <linux/types.h>
#include <fcntl.h>
#include <linux/cdrom.h>
int main(void)
{
int cdrom;
int status;
cdrom = open("/dev/cdrom", O_RDONLY | O_NONBLOCK);
status = ioctl(cdrom, CDROM_DRIVE_STATUS);
printf("Возврат drive status: %d\n", status);
status = ioctl(cdrom, CDROM_DISC_STATUS);
printf("Возврат disc status: %d\n", status);
close(cdrom);
}
Запускаю в трех ситуациях:
1. Лоток задвинут, диска нет
2. Лоток выдвинут
3. Лоток задвинут, диск есть
Ожидаемый вывод программы:
1.
Возврат drive status: 1
Возврат disc status: 0
2.
Возврат drive status: 2
Возврат disc status: 0
3.
Возврат drive status: 4
Возврат disc status: 101
Реальный вывод программы:
1.
Возврат drive status: 2
Возврат disc status: 0
2.
Возврат drive status: 2
Возврат disc status: 0
3.
Возврат drive status: 4
Возврат disc status: 101
Что не так?
Как по другому определить состояние лотка.
Заранее благодарен. Владимир.
PS. Проверить программу на другой машине с Linux возможности нет (в радиусе 50
км это единственная машина).
cdctl-0.15 скачанная с сайта разработчика имеет такую же особенность.
Есть подозрение на глючность IDE контроллера
-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 11569; Возраст листа: 418; Участников: 1262
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/229640
-*Информационный канал Subscribe.Ru
Подписан адрес:
Код этой рассылки: comp.soft.linux.discuss
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Отписать: mailto:comp.soft.linux.discuss--unsub@subscribe.ru?subject=comp.soft.linux.discuss
http://subscribe.ru/ http://subscribe.ru/feedback