Filbeskrivelse

opdateret: 03/13/2021 af Computer Hope

filbeskrivelser illustration

en filbeskrivelse er et tal, der entydigt identificerer en åben fil i en computers operativsystem. Den beskriver en dataressource, og hvordan denne ressource kan tilgås.

når ET program beder om at åbne en fil — eller en anden dataressource, som en netværksstik — giver kernen:

  1. adgang.
  2. opretter en post i den globale filtabel.
  3. giver programmet placeringen af denne post.

deskriptoren identificeres med et unikt ikke-negativt heltal, såsom 0, 12 eller 567. Der findes mindst en filbeskrivelse for hver åben fil på systemet.

filbeskrivelser blev først brugt i og bruges af moderne operativsystemer, herunder MacOS og BSD. I Microsoft-vinduer er filbeskrivere kendt som filhåndtag.

oversigt

når en proces foretager en vellykket anmodning om at åbne en fil, returnerer kernen en filbeskrivelse, der peger på en post i kernens globale filtabel. Posten filtabel indeholder oplysninger såsom filens inode, byte-forskydning og adgangsbegrænsningerne for den pågældende datastrøm (skrivebeskyttet, skrivebeskyttet osv.).

Fildeskriptordiagram

Stdin, stdout og stderr

på et unikt operativsystem er de første tre fildeskriptorer som standard STDIN (standard input), STDOUT (standard output) og STDERR (standardfejl).

navn Filbeskrivelse beskrivelse forkortelse
standard input 0 standarddatastrømmen for input, for eksempel i en kommandopipeline. I terminalen er dette som standard tastaturindgang fra brugeren. stdin
Standard output 1 standarddatastrømmen til output, for eksempel når en kommando udskriver tekst. I terminalen er dette som standard brugerens skærm. stdout
standardfejl 2 standarddatastrømmen for output, der vedrører en fejl, der opstår. I terminalen er dette som standard brugerens skærm. stderr

omdirigering af filbeskrivere

Filbeskrivere kan fås direkte adgang til ved hjælp af bash, standardskallen til Linj.

Når du f.eks. bruger kommandoen find, går vellykket output til stdout (filbeskrivelse 1), og fejlmeddelelser går til stderr (filbeskrivelse 2). Begge streams vises som terminaludgang:

find / -name '*something*'
/usr/share/doc/something/usr/share/doc/something/examples/something_randomfind: `/run/udisks2': Permission deniedfind: `/run/wpa_supplicant': Permission denied/usr/share/something/usr/games/something

Vi får fejl, fordi find forsøger at søge i et par systemkataloger, som vi ikke har tilladelse til at læse. Alle linjer, der siger” Tilladelse nægtet ” blev skrevet til stderr, og de andre linjer blev skrevet til stdout.

Du kan skjule stderr ved at omdirigere filbeskrivelse 2 til/dev/null, den specielle enhed i Linuks, der “går ingen steder”:

find / -name '*something*' 2>/dev/null
/usr/share/doc/something/usr/share/doc/something/examples/something_random/usr/share/something/usr/games/something

fejlene sendt til/dev / null, og vises ikke.

det er vigtigt at forstå forskellen mellem stdout og stderr, når du vil arbejde med et programs output. For eksempel, hvis du forsøger at grep outputtet fra find-kommandoen, vil du bemærke, at fejlmeddelelserne ikke filtreres, fordi kun standardoutputtet ledes til grep.

find / -name '*something*' | grep 'something'
/usr/share/doc/something/usr/share/doc/something/examples/something_randomfind: `/run/udisks2': Permission deniedfind: `/run/wpa_supplicant': Permission denied/usr/share/something/usr/games/something

Du kan dog omdirigere standardfejl til standardoutput, og derefter behandler grep teksten til begge:

find / -name '*something*' 2>&1 | grep 'something'
/usr/share/doc/something/usr/share/doc/something/examples/something_random/usr/share/something/usr/games/something

Bemærk, at i kommandoen ovenfor, målfilbeskrivelsen (1) er præfikset med et ampersand (“&”). For mere information om omdirigering af datastrøm, se rørledninger i bash-skallen.

for eksempler på oprettelse og brug af filbeskrivere i bash, se vores eksekveringskonstruerede kommandoeksempler.

Filhåndtag, Operativsystembetingelser

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.