sysctl(2) System Calls Manual sysctl(2) NAVN sysctl - laes/skriv systemparametre SYNOPSIS #include #include [[deprecated]] int _sysctl(struct __sysctl_args *args); BESKRIVELSE Dette systemkald findes ikke laengere pa aktuelle kerner! Se NOTER. Kaldet _sysctl() laeser og/eller skriver kerneparametre. For eksempel vaertsnavnet eller det maksimalt antal abne filer. Argumentet har formen struct __sysctl_args { int *name; /* heltalvektor der beskriver variabel */ int nlen; /* antallet af elementer for denne vektor */ void *oldval; /* 0 eller adresse hvor gammel vaerdi skal lagres */ size_t *oldlenp; /* tilgaengelig plads for gammel vaerdi, overskrevet af faktisk storrelse pa gammel vaerdi */ void *newval; /* 0 eller adresse for ny vaerdi */ size_t newlen; /* storrele pa ny vaerdi */ }; Dette kald udforer en sogning i en traestruktur, der muligt ligner et mappetrae under /proc/sys, og hvis anmodet element findes kaldes en passende rutine til at laese eller aendre vaerdien. RETURVAERDI Ved succesfuld fuldforelse returnerer _sysctl() 0. Ellers returneres en vaerdi pa -1 og errno angives for at indikere fejlen. FEJL EACCES EPERM Ingen sogerettighed for en af de modte >>mapper<< eller ingen laeserettighed hvor oldval var forskellig fra nul, eller ingen skriverettighed hvor newval var forskellige fra nul. EFAULT Igangsaettelsen spurgte efter den tidligere vaerdi ved at angive oldval til forskellig fra nul, men tillod nul plads i oldlenp. ENOTDIR navn blev ikke fundet. STANDARDER Linux. HISTORIK 4.4BSD, Linux 1.3.57. Fjernet i Linux 5.5, glibc 2.32. Kun Linux har spejlet /proc/sys og objektnavneskemaerne er forskellige for Linux og 4.4BSD, men erklaeringen af funktionen sysctl() er den samme i begge. NOTER Brug af dette systemkald blev laenge fraradet: siden Linux 2.6.24 medforer brug af dette systemkald advarsler i kerneloggen og i Linux 5.5 blev systemkaldet endelig fjernet. Brug graensefladen /proc/sys i stedet for. Bemaerk at pa aeldre kerner hvor dette systemkald stadig findes, sa er det kun tilgaengeligt hvis kernen blev konfigureret med tilvalget CONFIG_SYSCTL_SYSCALL. Derudover tilbyder glibc ikke et omslag for dette systemkald, hvilket nodvendiggor brug af syscall(2). FEJL Objektnavnene er forskellige mellem kerneversioner, hvilket gor dette systemkald vaerdilost for programmer. Ikke alle tilgaengelige objekter er korrekt dokumenterede. Det er endnu ikke muligt at aendre operativsystem ved at skrive til /proc/sys/kernel/ostype. EKSEMPLER #define _GNU_SOURCE #include #include #include #include #include #include #include int _sysctl(struct __sysctl_args *args); #define OSNAMESZ 100 int main(void) { int name[] = { CTL_KERN, KERN_OSTYPE }; char osname[OSNAMESZ]; size_t osnamelth; struct __sysctl_args args; memset(&args, 0, sizeof(args)); args.name = name; args.nlen = countof(name); args.oldval = osname; args.oldlenp = &osnamelth; osnamelth = sizeof(osname); if (syscall(SYS__sysctl, &args) == -1) { perror("_sysctl"); exit(EXIT_FAILURE); } printf("Denne maskine afvikler %*s\n", (int) osnamelth, osname); exit(EXIT_SUCCESS); } SE OGSA proc(5) OVERSAETTELSE Oversaettere af denne manual til dansk Joe Hansen Denne oversaettelse er gratis dokumentation; laes GNU General Public License version 3 eller nyere for ophavsretbetingelser. Der er INGEN ANSVAR. Hvis du stoder pa fejl i oversaettelsen af denne vejledning, skal du sende en besked til . Linux man-pages 6.18 10. februar 2026 sysctl(2)