Forum: PC-Programmierung open( "dev/char") fail


von olpo (Gast)


Lesenswert?

Hallo,


ich versuche den File-Descriptor eines Char Device zu öffnen.

Obwohl ich das Char Device in /dev sehe, bekomme ich nur -1 zurück beim 
Versuch den File-Descriptor mit 'open' zu bekommen.
1
int main(void)
2
{  
3
  int fd = open( "/dev/myCharDev", O_RDWR );
4
  if (fd < 0){
5
    printf("fd open, ERR: %d\n",fd);
6
    return -1;
7
  }
8
  printf("fd=%d\n",fd);
9
  return 0;
10
}

Woran kann das liegen?
Ist das überhaupt richtig so, den FD eines Char Dev zu bekommen?
Gibt es noch eine andere Möglichkeit?

von Lukas K. (carrotindustries)


Lesenswert?

Schau dir mal an, was open() in errno schreibt. Da steht dann drin, was 
genau schiefgelaufen ist.

von Klaus (Gast)


Lesenswert?

Also ich wette mal 5 zu 1, dass es sich um einen Trollversuch handelt. 
Aber es könnte ja auch anders sein.

1. Welches Device willst Du nun öffnen? "dev/char" oder "/dev/myCharDev" 
?

2. Ist es korrekt, dass Du genau "dev/char" bzw. "/dev/myCharDev" mit ls 
siehst? Wenn ja, welches davon? Wieso fehlt beim ersten Dateinamen das 
Slash?

von Marc (Gast)


Lesenswert?

Lukas K. schrieb:
> Schau dir mal an, was open() in errno schreibt. Da steht dann
> drin, was
> genau schiefgelaufen ist.

Permission denied?

von Rolf M. (rmagnus)


Lesenswert?

olpo schrieb:
>     printf("fd open, ERR: %d\n",fd);

open() gibt im Fehlerfall immer -1 zurück. Wie schon gesagt wurde, steht 
in errno eine Fehlernummer, mit strerror(errno) bekommt man auch einen 
dazugehörigen Fehlertext. Am einfachsten ist aber, perror() zu nutzen:
1
  if (fd < 0){
2
    perror("fd open");
3
    return -1;
4
  }

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.