Met open (2) kan ik een device file openen. Ik wil nu een character device openen zonder dat ik hierbij een device file hoef te zoeken. Als voorbeeld neem ik /dev/dsp:
Character device, major=14, minor=3. Nu wil ik dus een applicatie maken die deze character device met major=14 en minor=3 opent zonder dat hij weet dat /dev/dsp hierbij hoort. Bijvoorbeeld iets als dit:
Zo kan ik dus die device openen zonder dat ik de locatie van de device file hoef te weten.
. Echter, dit is uberlelijk en er zit een race condition in (zie man 2 mktemp). Ik zou liever dat hele device file system passeren en direct de node met major=14 en minor=3 openen. Weet iemand een manier om dat te doen?
.
code:
1
2
| $ ls -la /dev/dsp crw------- 1 rbultje root 14, 3 Jan 30 2003 /dev/dsp |
Character device, major=14, minor=3. Nu wil ik dus een applicatie maken die deze character device met major=14 en minor=3 opent zonder dat hij weet dat /dev/dsp hierbij hoort. Bijvoorbeeld iets als dit:
C:
1
2
3
4
5
6
7
8
| int major = 14, minor = 3, fd; char *tempdev = "/tmp/.temp.XXXXXX", command[256]; tempdev = mktemp (tempdev); snprintf (command, sizeof (command), "mknod %s c %d %d", tempdev, major, minor); system (command); fd = open (tempdev, O_RDONLY); [etc.] |
Zo kan ik dus die device openen zonder dat ik de locatie van de device file hoef te weten.
edit:
.oisyn, je hebt gelijk, heb ik meteen ff aangepast.
.
.oisyn, je hebt gelijk, heb ik meteen ff aangepast.
[ Voor 5% gewijzigd door Verwijderd op 10-10-2003 13:49 ]