[linux] Re: fuser in actie
Geert Stappers
stappers op stappers.nl
Ma Jun 16 21:32:17 CEST 2008
Op 11-06-2008 om 22:34 schreef Geert Stappers:
> [ thread gebroken, was "unmount zegt 'device busy'" ]
>
> Op 11-06-2008 om 21:57 schreef Wybo Dekker:
> > Geert Stappers wrote:
> >
> > > Maar nu de "device busy" bekend is, zou ik nog graag
> > > de output `fuser /store/TeX.iso` zien.
> >
> > Dat liet helemaal niets zien.
> > Vervolgens wat experimenten:
<knip/>
> > Ben benieuwd of jij daar iets van snapt...
>
> Jawel, het expriment is slecht uitgevoerd.
Zo heel slecht was het expriment toch ook weer niet.
Er waren wat verrassende resultaten:
1) fuser ziet niet dat /store/TeX.iso een (loop mounted) device is.
2) vi die geen ge-opende files had.
punt 1 kan ik me wel voorstellen,
/store/TeX.iso is eigenlijk een gewoon bestand.
met punt 2 heb ik wat meer moeite mee,
ik vermoed dat vi slimme dingen doet,
op zijn minst zit er meer programmacode in vi dan ik heb uitgezocht.
> In een later bericht wel een beschrijving hoe het expriment goed
> uitgevoerd kan worden.
De meeting met /store en /store/TeX.iso' is niet zo handig gekozen.
Het ene, '/store', is een mountpoint, het ander, '/store/TeX.iso' is
een file, die of meer als "device" gebruikt wordt.
Beter is om '/store/TeX.iso' en '/TeX' te gebruiken.
Om slimme code in vi uit de weg te gaan, heb ik een "open for read"
geschreven. De source code er van is bijgesloten, compileer opdracht is
cc -o ofr ofr.c
Spreek van een "werk terminal" en een "meet terminal",
i.p.v. telkens "andere xterm", "andere .
Expriment verzoek:
in de werk terminal
/path/naar/ofr /TeX/README.EN
in de meet terminal
fuser -a /store/TeX.iso /Tex
fuser -am /store/TeX.iso /Tex
in de werk terminal
enter en/of return aanslaan om ofr te stoppen
cd /TeX
in de meet terminal
fuser -a /store/TeX.iso /Tex
fuser -am /store/TeX.iso /Tex
Cheers
Geert Stappers
----8<---- begin ofr.c ----8<----
/* ofr.c
*
* Open For Read, opens a file for read
* then waits for ENTER
*/
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char errormsg[512] ;
static char usage[]= "\
usage: ofr <file>\n\
\n\
ofr needs 1 argument: the filename of a file to open for read\n\
\n\
Enterring RETURN exits the programm gracefull.\n\
" ;
/* Open for Read */
void ofr ( char filename[] )
{
FILE *fd ;
fd = fopen(filename,"r") ;
if ( fd == NULL ) {
sprintf(errormsg,"Could not read %s, %s\n"
,filename
,strerror(errno)
);
fprintf(stderr,errormsg);
} ;
getchar(); /* wait for user enterring RETURN */
fclose(fd);
} ;
int main(int argc, char *argv[] )
{
if (argc == 2) {
ofr ( argv[1] );
return (0) ;
} else {
fprintf(stderr,"%s\n",usage);
return(1);
}
}
/* last line */
----8<---- end ofr.c ----8<----
More information about the Linux
mailing list