libc

Under UNIX er libc det standardiserede programbibliotek, der bruges. Det er skrevet i C og kan bruges fra programmer skrevet i C. Mange af de funktioner, der stilles til rådighed er blot gennemstilling til systemkald, men der er også en del funktionalitet, som er implementeret i libc. Nogle funktioner som malloc() og free() til hukommelsesstyring er definerede i standarden for C.

Definitionerne af de forskellige funktioner og datatyper er fordelt på mange header-filer, som skal inkluderes i de programmer, som bruger libc. Selvom det kun er de nødvendige funktioner, der medtages definitioner for, vil det ofte være en stor fil, der linkes mod. Nogle funktioner som for eksempel de matematiske funktioner er dog placerede i et modul for sig selv, som skal angives ved link af programmet.

Der er funktioner inden for følgende områder:

  • Hukommelsesstyring.
  • Behandling af tekststrenge og tegn.
  • Læsning og skrivning af filer, både tekstfiler og binære filer. Der er både generelle og UNIX-specifikke funktioner.
  • Håndtering af hele filer, oprettelse, sletning og ændring af status som for eksempel skrivebeskyttelse.
  • FIFOer og pipes.
  • Netværksprogrammering med sockets og oversættelse af maskinnavne til netværksadresser.
  • Skærmstyring for tekstbaserede programmer.
  • Matematiske og aritmetiske funktioner.
  • Søgning og sortering i tabeller.
  • Brug af regulære udtryk.
  • Dato, tid og tidsintervaller.
  • Håndtering af tegnsæt og lokale indstillinger. Det er eksempelvis håndtering af om det er komma eller punktum, der bruges til at adskille decimaler fra heltalsdelen af et tal.
  • Såkaldte lange hop mellem funktioner. Programkonstruktioner med goto er normalt begrænset til en funktion.
  • Asynkrome signaler fra styresystemet eller en anden proces.
  • Synkronisering af processer, så fælles data ikke overskrives ukontrolleret.
  • Brug af processer, start og styring af processer fra et program.
  • Brug af oplysninger om brugere og grupper.
  • Platforminformation læsning og ændring af systemoplysninger og ressourcegrænser.
  • Krypteringsfunktioner og håndtering af kodeord