läsa (systemanrop)

I moderna POSIX- kompatibla operativsystem använder ett program som behöver komma åt data från en fil som är lagrad i ett filsystem läs-systemanropet . Filen identifieras av en filbeskrivning som normalt erhålls från ett tidigare anrop att öppna . Detta systemanrop läser in data i byte , vars nummer anges av den som ringer, från filen och lagras sedan i en buffert som tillhandahålls av anropsprocessen.

Lässystemanropet tar tre argument:

  1. Filbeskrivningen för filen.
  2. bufferten där den lästa datan ska lagras och
  3. antalet byte som ska läsas från filen.

POSIX-användning

Lässystemets anropsgränssnitt är standardiserat av POSIX-specifikationen. Data från en fil läses genom att anropa läsfunktionen:

       ssize_t  read  (  int  fd  ,  void  *  buf  ,  size_t  count  ); 

Det returnerade värdet är antalet lästa byte (noll indikerar slutet på filen ) och filpositionen flyttas fram med detta nummer. Det är inte ett fel om detta antal är mindre än antalet begärda byte; detta kan till exempel hända för att färre byte faktiskt är tillgängliga just nu (kanske för att vi var nära slutet av filen, eller för att vi läser från en pipe eller från en terminal ), eller för att systemanropet avbröts av en signal .

Alternativt returneras -1 när ett fel inträffar, i ett sådant fall sätts errno på lämpligt sätt och vidare lämnas det ospecificerat om filpositionen (om någon) ändras.

Se även

externa länkar