Hm, az a furcsa, hogy nem forditva mukodnek ezek az eszkozok (hogy mindenki olvashatja, viszont csak egyvalaki irhatja: az, aki eloszor irasra nyitja meg).
A kernel is tudja ezt, lehet hogy csak meg kell peccselni a megfelelo modult (/usr/src/linux/drivers/media/video/videodev.c), pl:
...
static int is_device_open=0;
...
static int device_open(struct inode *inode, struct file *file)
{
static int counter = 0;
if ( is_device_open ) return(-EBUSY); /*********/
MOD_INC_USE_COUNT;
is_device_open++;
...
}
...
(ez kicsit nagypofaju beszolas, mert nem nagyon csinaltam ilyeneket, csak ja'te'k-szinten, pl. amibol ezt a fenti izet kikopiztam <- a lenyeg a /****/ sor, ahol az is_device_open egy modulszintu" belso" statikus valtozo; de a lenyeg, hogy elvileg relative egyszeruen meg /lehetne/ csinalni)
De hogy erdemben is probaljak hozzaszolni: a fenti megoldasnal talan egy fokkal kulturaltabb ga'nyola's, hogy valami pollozo ize'vel (pl. select()) figyeled a /proc/video/dev/ konyvta'r tartalma't, illetve ebben a /dev/video*-nak megfelelo" file-t (/proc/video/dev/video*). Ha a procfs olyan es szerencsenk van, akkor a /dev/video* megnyita'sakor ezen konyvtar es/vagy file megvaltozik, amit a select()-tel tudsz figyelni, es rogton le lehet reagalni.
A.