Приветствую!Каким образом можно получить список доступных устройств CD-ROM в Linux? Вернее, нужно получить их пути (/dev/hd...). Мне посоветовали сделать так:
int fd;
char Device[11];
struct cdrom_volctrl cdct;
for (unsigned char i=0;i<4;i++)
{
sprintf(Device,"/dev/hd%c/",'a'+i);
if ((fd=open(Device,O_RDONLY))!=-1)
{
if (ioctl(fd,CDROMVOLREAD,&cdct)!=-1)
{
// Это CD-ROM
}
close(fd);
}
}Но это работает только когда в устройство вставлен компакт-диск. А можно ли как-нибудь определить CD-ROM'ы без необходимости вставлять в них CD?
/proc/sys/dev/cdrom/info - по-моему инфу про сидиромы лучше всего искать там.
>Приветствую!
>
>Каким образом можно получить список доступных устройств CD-ROM в Linux? Вернее, нужно
>получить их пути (/dev/hd...). Мне посоветовали сделать так:
>
>int fd;
>char Device[11];
>struct cdrom_volctrl cdct;
>for (unsigned char i=0;i<4;i++)
>{
> sprintf(Device,"/dev/hd%c/",'a'+i);
> if ((fd=open(Device,O_RDONLY))!=-1)
> {
> if (ioctl(fd,CDROMVOLREAD,&cdct)!=-1)
> {
> // Это CD-ROM
> }
> close(fd);
> }
>}
>
>Но это работает только когда в устройство вставлен компакт-диск. А можно ли
>как-нибудь определить CD-ROM'ы без необходимости вставлять в них CD?Попробуй при открытии устройства добавить ключ O_NONBLOCK:
fd=open(Device,O_RDONLY|O_NONBLOCK);