Scroll to navigation

sysctl(2) System Calls Manual sysctl(2)

NAVN

sysctl - læs/skriv systemparametre

SYNOPSIS

#include <unistd.h>
#include <linux/sysctl.h>
[[deprecated]] int _sysctl(struct __sysctl_args *args);

BESKRIVELSE

Dette systemkald findes ikke længere på aktuelle kerner! Se NOTER.

Kaldet _sysctl() læser og/eller skriver kerneparametre. For eksempel værtsnavnet eller det maksimalt antal åbne 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 værdi skal lagres */
size_t *oldlenp; /* tilgængelig plads for gammel værdi,
overskrevet af faktisk størrelse på gammel værdi */
void *newval; /* 0 eller adresse for ny værdi */
size_t newlen; /* størrele på ny værdi */ };

Dette kald udfører en søgning i en træstruktur, der muligt ligner et mappetræ under /proc/sys, og hvis anmodet element findes kaldes en passende rutine til at læse eller ændre værdien.

RETURVÆRDI

Ved succesfuld fuldførelse returnerer _sysctl() 0. Ellers returneres en værdi på -1 og errno angives for at indikere fejlen.

FEJL

Ingen søgerettighed for en af de mødte »mapper« eller ingen læserettighed hvor oldval var forskellig fra nul, eller ingen skriverettighed hvor newval var forskellige fra nul.
Igangsættelsen spurgte efter den tidligere værdi ved at angive oldval til forskellig fra nul, men tillod nul plads i oldlenp.
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 erklæringen af funktionen sysctl() er den samme i begge.

NOTER

Brug af dette systemkald blev længe frarådet: siden Linux 2.6.24 medfører brug af dette systemkald advarsler i kerneloggen og i Linux 5.5 blev systemkaldet endelig fjernet. Brug grænsefladen /proc/sys i stedet for.

Bemærk at på ældre kerner hvor dette systemkald stadig findes, så er det kun tilgængeligt hvis kernen blev konfigureret med tilvalget CONFIG_SYSCTL_SYSCALL. Derudover tilbyder glibc ikke et omslag for dette systemkald, hvilket nødvendiggør brug af syscall(2).

FEJL

Objektnavnene er forskellige mellem kerneversioner, hvilket gør dette systemkald værdiløst for programmer.

Ikke alle tilgængelige objekter er korrekt dokumenterede.

Det er endnu ikke muligt at ændre operativsystem ved at skrive til /proc/sys/kernel/ostype.

EKSEMPLER

#define _GNU_SOURCE
#include <stdcountof.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/syscall.h>
#include <unistd.h>
#include <linux/sysctl.h>
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 OGSÅ

proc(5)

OVERSÆTTELSE

Oversættere af denne manual til dansk Joe Hansen <joedalton2@yahoo.dk>

Denne oversættelse er gratis dokumentation; læs GNU General Public License version 3 eller nyere for ophavsretbetingelser. Der er INGEN ANSVAR.

Hvis du støder på fejl i oversættelsen af ​​denne vejledning, skal du sende en besked til debian-l10n-danish@lists.debian.org.

10. februar 2026 Linux man-pages 6.17