Я выполнил следующий код, чтобы проверить использование ioctl, и я довольно запутался в результатах.Как ioctl точно работает и как правильно работать с dvd-показаниями?
int main(void)
{
int id;
dvd_struct s;
id=open("/dev/dvd",O_RDONLY);
ioctl(id,DVD_READ_STRUCT,&s);
printf("%d,%s,%s",s.bca.len,s.manufact.value,s.disckey.value);
close(id);
}
Прежде всего в изготовл и значения disckey появляются редкие символы, но это будет не так важно, если бы это было не потому, что в любое время я запустить программу появляется новое значение, несмотря на всегда сохраняя DVD в dvd-проигрывателе. Даже bca.len варьируется в каждом исполнении, хотя верно, что он всегда дает число выше 32000 и ниже 33000.
Наконец, результаты даются, есть ли вставленный dvd или нет, поэтому я задаюсь вопросом, где именно получается результат, даже если он читает dvd.
dvd распознается операционной системой, так как cat/dev/dvd отображает его содержание в прекрасном виде.
Может кто-нибудь объяснить, почему это работает таким образом, и если бы я мог заставить его работать appropiately (я имею в виду, получать те же результаты, по крайней мере, для изготовл и disckey значений и убедившись, что информация взята из вставленного DVD?
Спасибо за внимание.
Я ничего не знаю об ioctl и как использовать thist struct, но это кажется полезным. http://www.tldp.org/LDP/lkmpg/2.4/html/x856.html – Chirality