Hallo!
Ich bin grad an einem Linux Hardware-Kurs dran.
Mit diesem Code wird das Inhaltsverzeichnis einer
CD/DVD ausgelesen!
Im Grunde genommen habe ich Alles verstanden nur eben 2
Sachen nicht ganz!
Hier ist erstmal der Code:
Die Ausgabe sieht so aus:
1) Warum ein Segmentation Fault?
2) Was ergibt das?
Danke für eure Hilfe!
Ich bin grad an einem Linux Hardware-Kurs dran.
Mit diesem Code wird das Inhaltsverzeichnis einer
CD/DVD ausgelesen!
Im Grunde genommen habe ich Alles verstanden nur eben 2
Sachen nicht ganz!
Hier ist erstmal der Code:
Code:
static void toc(int cdrom)
{
struct cdrom_tochdr tochdr;
struct cdrom_tocentry tocentry;
int track;
if(ioctl(cdrom, CDROMREADTOCHDR, &tochdr) == -1)
{
perror("Header kann nicht gelesen werden!\n");
exit(EXIT_FAILURE);
}
printf("Inhalt %d Tracks:\n", tochdr.cdth_trk1);
track = tochdr.cdth_trk0;
while(track <= tochdr.cdth_trk1)
{
tocentry.cdte_track = track;
tocentry.cdte_format = CDROM_MSF;
if(ioctl(cdrom, CDROMREADTOCENTRY, &tocentry) == -1)
{
perror("Inhalt der CD kann nicht ermittelt werden!\n");
exit(EXIT_FAILURE);
}/*if*/
printf("%3d: %02d:%02d:02 (%06d) %s%s\n",
tocentry.cdte_track, /*Welcher Track?*/
tocentry.cdte_addr.msf.minute, /*Minute*/
tocentry.cdte_addr.msf.second, /*Sekunde*/
tocentry.cdte_addr.msf.frame, /*Frame*/
tocentry.cdte_addr.msf.frame +
tocentry.cdte_addr.msf.second * 75 +
tocentry.cdte_addr.msf.minute * 75 * 60 -150,
(tocentry.cdte_ctrl & CDROM_DATA_TRACK) ? "data" : "audio", /*Daten oder Audio?*/
CDROM_LEADOUT == track ? " (leadout)" : "");
track++;
}/*while*/
}
Die Ausgabe sieht so aus:
Code:
Inhalt 11 Tracks:
1: 00:02:02 (000000) (null) audio
Segmentation fault
1) Warum ein Segmentation Fault?
2) Was ergibt das?
Code:
tocentry.cdte_addr.msf.frame + tocentry.cdte_addr.msf.second * 75 +tocentry.cdte_addr.msf.minute * 75 * 60 -150
Danke für eure Hilfe!