Scroll to navigation

vmsplice(2) System Calls Manual vmsplice(2)

NAVN

vmsplice - splejs brugersider til/fra en datakanal

BIBLIOTEK

C-standardbibliotek (libc-lc)

SYNOPSIS

#define _GNU_SOURCE         /* Se feature_test_macros(7) */
#include <fcntl.h>
ssize_t vmsplice(int fd, const struct iovec *iov,
                 size_t nr_segs, unsigned int flags);

BESKRIVELSE

Hvis fd åbnes for skrivning så oversætter systemkaldet vmsplice() nr_segs-intervaller for brugerhukommelse beskrevet af iov til en datakanal. Hvis fd er åben for læsning udfylder systemkaldet vmsplice() nr_segs-intervaller for brugerhukommelse beskrevet af iov fra en datakanal. Fildeskriptoren fd skal referere til en datakanal.

Tekstsøgeren iov peger på en tabel af iovec-strukturer som beskrevet i iovec(3type).

Argumentet flags er en bit-maske, der er sammensat af ORing sammen med nul eller flere af de følgende værdier:

Ubrugt for vmsplice(); se splice(2).
Bloker ikke en I/O; se splice(2) for yderligere detaljer.
Har i øjeblikket ingen effekt for vmsplice(), men kan blive implementeret i fremtiden; se splice(2).
Brugersiderne er gift for kernen. Programmet ændrer måske ikke denne hukommelse nogensinde, eller sidemellemlageret og data på disken kan være forskellige. At give sider i gave til kernen betyder, at en efterfølgende splice(2) SPLICE_F_MOVE med succes kan flytte siderne; hvis dette flag ikke er angivet, så skal en efterfølgende splice(2) SPLICE_F_MOVE kopiere siderne. Data skal være korrekt sidejusteret, både i hukommelse og længde.

RETURVÆRDI

Ved succesfuld fuldførelse returnerer vmsplice() antallet af byte overført til datakanalen. Ved fejl returnerer vmsplice() -1 og errno angives for at indikere fejlen.

FEJL

SPLICE_F_NONBLOCK blev angivet i flag, og operationen ville blokere.
fd er enten ikke gyldig, eller refererer ikke til en datakanal.
nr_segs er større end IOV_MAX; eller hukommelsen er ikke justeret hvis SPLICE_F_GIFT er angivet.
Ikke nok hukommelse.

STANDARDER

Linux.

HISTORIK

Linux 2.6.17, glibc 2.5.

NOTER

vmsplice() følger de andre vektoriserede læse/skriv-typefunktioner når det kommer til begrænsninger på antallet af segmenter sendt ind. Denne begrænsning er IOV_MAX som defineret i <limits.h>. I øjeblikket er denne begrænsning 1024.

vmsplice() understøtter korrekt splejsning kun fra brugerhukommelse til en datakanal. I den modsatte retning kopieres bare dataene til brugerrummet. Men dette gør grænsefladen pæn og symmetrisk og gør det muligt at bygge på vmsplice() med plads til fremtidige forbedringer i ydelsen.

SE OGSÅ

splice(2), tee(2), pipe(7)

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.

8. februar 2026 Linux man-pages 6.17