.\" -*- coding: UTF-8 -*- .\" Copyright (C) 2005, 2008, Michael Kerrisk .\" (A few fragments remain from an earlier (1992) version by .\" Drew Eckhardt .) .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" Modified by Michael Haardt .\" Modified 1993-07-23 by Rik Faith .\" Modified 1996-10-22 by Eric S. Raymond .\" Modified 2004-06-17 by Michael Kerrisk .\" Modified 2005, mtk: added an example program .\" Modified 2008-01-09, mtk: rewrote DESCRIPTION; minor additions .\" to EXAMPLE text. .\" 2008-10-10, mtk: add description of pipe2() .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH pipe 2 "30 juli 2023" "Linux man\-pagina's 6.05.01" .SH NAAM pipe, pipe2 \- maak pipe .SH BIBLIOTHEEK Standard C bibliotheek (\fIlibc\fP, \fI\-lc\fP) .SH SAMENVATTING .nf \fB#include \fP .PP \fBint pipe(int \fP\fIpipefd\fP\fB[2]);\fP .PP \fB#define _GNU_SOURCE\fP /* Zie feature_test_macros(7) */ \fB#include \fP /* Definitie van \fBO_*\fP constanten */ \fB#include \fP .PP \fBint pipe2(int \fP\fIpipe_bes_ind\fP\fB[2], int \fP\fIvlaggen\fP\fB);\fP .PP /* Op Alpha, IA\-64, MIPS, SuperH en SPARC/SPARC64, heeft pipe() het volgende prototype; zie NOTITIES */ .PP \fB#include \fP .PP \fBstruct fd_pair {\fP \fBlong fd[2];\fP \fB};\fP \fBstruct fd_pair pipe(void);\fP .fi .SH BESCHRIJVING \fBpipe\fP() maakt een pijp aan: een uni\-directioneel data kanaal dat kan worden gebruikt voor interprocess communicatie. Het array \fIpipefd\fP wordt gebruikt om twee bestandsbeschrijving te retourneren die naar de uiteinden van de pijp wijzen. \fIpipefd[0]\fP wijst naar het lees\-uiteinde van de pijp. \fIpipefd[1]\fP wijst naar het schrijf\-uiteinde van de pijp. Data geschreven naar het schrijf\-uiteinde van de pijp wordt gebufferd door de kernel totdat deze werd gelezen aan het lees\-uiteinde van de pijp. Voor verder details, zie\fBpipe\fP(7). .PP Als \fIvlaggen\fP is 0, dan is \fBpipe2\fP() hetzelfde als \fBpipe\fP(). De volgende waarden kunnen per bit worden geOF´ed in \fIvlaggen\fP om ander gedrag te verkrijgen: .TP \fBO_CLOEXEC\fP Zet de sluit\-bij\-exec (\fBFD_CLOEXEC\fP) vlag op twee nieuwe bestandsbeschrijvingen. Zie de beschrijving van dezelfde vlag in \fBopen\fP(2) voor redenen waarom dit bruikbaar kan zijn. .TP \fBO_DIRECT\fP (sinds Linux 3.4) .\" commit 9883035ae7edef3ec62ad215611cb8e17d6a1a5d Maak een pijp aan die Invoer/Uitvoer in pakket modus uitvoert. Elke \fBwrite\fP(2) naar de pijp wordt behandeld als een apart pakket, en \fBread\fP(2)s van deze pijp leest een pakket per tijdseenheid. Let op de volgende punten: .RS .IP \[bu] 3 Het schrijven van meer dan \fBPIPE_BUF\fP bytes (zie \fBpipe\fP(7) wordt gesplitst in meerdere pakketten. De constante \fBPIPE_BUF\fP is gedefinieerd in \fI\fP. .IP \[bu] Als \fBread\fP(2) een buffer grootte opgeeft die kleiner is dan het volgende pakket, dan zal het gevraagde aantal bytes worden gelezen, en zullen de overmaat aan bytes in het pakket worden weggegooid. Opgeven van een buffer grootte van \fBPIPE_BUF\fP is voldoende om de grootst mogelijke pakketten te lezen (zie het voorgaande punt). .IP \[bu] Nul\-lengte pakketten worden niet ondersteund. (Een \fBread\fP(2) die een buffer grootte van nul opgeeft is een ongeldige operatie en geeft 0 terug.) .RE .IP Oudere kernels die deze vlag niet ondersteunen zullen dit kenbaar maken door middel van een \fBEINVAL\fP fout. .IP .\" commit 0dbf5f20652108106cb822ad7662c786baaa03ff .\" FIXME . But, it is not possible to specify O_DIRECT when opening a FIFO Vanaf Linux 4.5 is het mogelijk om de \fBO_DIRECT\fP instelling van een pijp bestandsbeschrijving te veranderen met \fBfcntl\fP(2). .TP \fBO_NONBLOCK\fP Stel de \fBO_NONBLOCK\fP bestandsstatus vlag in op de open bestandsbeschrijving aangewezen naar door een nieuwe bestandsbeschrijving. Het gebruiken van deze vlag bespaart extra aanroepen van \fBfcntl\fP(2) om hetzelfde resultaat te bereiken. .TP \fBO_NOTIFICATION_PIPE\fP .\" commit c73be61cede5882f9605a852414db559c0ebedfd Vanaf Linux 5.8 is het algemene informatie mechanisme gebouwd bovenop de pipe waar de kernel informatie berichten splitst in pipes die worden geopend in gebruikers ruimte. De eigenaar van de pipe dient de kernel te vertellen welke bronnen van gebeurtenissen worden geobserveerd en filters kunnen worden toegepast om te selecteren welke sub\-gebeurtenissen moeten worden geplaatst in de pipe. .SH "EIND WAARDE" Bij succes wordt nul teruggegeven. Bij falen wordt \-1 teruggegeven, wordt \fIerrno\fP overeenkomstig gezet, en \fIpipefd\fP blijft ongewijzigd. .PP .\" http://austingroupbugs.net/view.php?id=467 Op Linux (en andere systemen), verandert \fBpipe\fP() de \fIpipefd\fP niet na een fout. Een eis om dit gedrag te standaardiseren werd toegevoegd in POSIX.1\-2008 TC2. De Linux\-specifieke \fBpipe2\fP() systeem aanroep doet hetzelfde en verandert \fIpipefd\fP niet bij een fout. .SH FOUTEN .TP \fBEFAULT\fP \fIpipe_bes_ind\fP is ongeldig. .TP \fBEINVAL\fP (\fBpipe2\fP()) Ongeldige waarde in \fIvlaggen\fP. .TP \fBEMFILE\fP De per\-proces limiet van het aantal open bestandsbeschrijvingen werd bereikt. .TP \fBENFILE\fP De grens aan het aantal open bestanden van het systeem is bereikt. .TP \fBENFILE\fP De harde grens van gebruikers geheugen dat kan worden toegewezen aan pijpen werd bereikt en de aanroeper was niet gerechtigd; zie \fBpipe\fP(7). .TP \fBENOPKG\fP (\fBpipe2\fP()) \fBO_NOTIFICATION_PIPE\fP werd doorgegeven in \fIflags\fP en ondersteuning voor informaties (\fBCONFIG_WATCH_QUEUE\fP) is niet gecompileerd in de kernel. .SH VERSIES .\" See http://math-atlas.sourceforge.net/devel/assembly/64.psabi.1.33.ps.Z .\" for example, section 3.2.1 "Registers and the Stack Frame". De Systeem V ABI op sommige architecturen staat toe om meer dan een register te gebruiken om meerdere waarden terug te geven; verschillende architecturen (namelijk Alpha, IA\-64, MIPS, SuperH en SPARC/SPARC64) (mis)/(ge)bruiken deze eigenschap om de \fBpipe\fP() systeem aanroep in een functionele manier te implementeren: de aanroep gebruikt geen argumenten en geeft een paar bestandsbeschrijvingen terug bij succes. De glibc \fBpipe\fP() omwikkel functie handelt dit transparant af. Zie \fBsyscall\fP(2) voor informatie betreffende registers die gebruikt worden om de tweede bestandsbeschrijving op te slaan. .SH "VOLDOET AAN" .TP \fBpipe\fP() POSIX.1\-2008. .TP \fBpipe2\fP() Linux. .SH GESCHIEDENIS .TP \fBpipe\fP() POSIX.1\-2001. .TP \fBpipe2\fP() Linux 2.6.27, glibc 2.9. .SH VOORBEELDEN .\" fork.2 refers to this example program. Het volgende programma maakt een pijp aan, vervolgens wordt \fBfork\fP(2) gebruikt om een kind proces aan te maken; dit kind erft een dubbele set bestandsbeschrijvingen die naar dezelfde pijp wijzen. Na de \fBfork\fP(2) sluit elk proces de bestandsbeschrijving die het niet nodig heeft voor de pijp (zie \fBpipe\fP(7)). Het ouder proces schrijft vervolgens de tekenreeks bevat in de commando regel van het programma naar de pijp, en het kind leest deze tekenreeks byte voor byte van de pijp en echo´ed deze naar de standaard uitvoer. .SS "Programma bron" .\" SRC BEGIN (pipe.c) .EX #include #include #include #include #include \& int main(int argc, char *argv[]) { int pipefd[2]; char buf; pid_t cpid; \& if (argc != 2) { fprintf(stderr, "Usage: %s \en", argv[0]); exit(EXIT_FAILURE); } \& if (pipe(pipefd) == \-1) { perror("pipe"); exit(EXIT_FAILURE); } \& cpid = fork(); if (cpid == \-1) { perror("fork"); exit(EXIT_FAILURE); } \& if (cpid == 0) { /* Child reads from pipe */ close(pipefd[1]); /* Close unused write end */ \& while (read(pipefd[0], &buf, 1) > 0) write(STDOUT_FILENO, &buf, 1); \& write(STDOUT_FILENO, "\en", 1); close(pipefd[0]); _exit(EXIT_SUCCESS); \& } else { /* Parent writes argv[1] to pipe */ close(pipefd[0]); /* Close unused read end */ write(pipefd[1], argv[1], strlen(argv[1])); close(pipefd[1]); /* Reader will see EOF */ wait(NULL); /* Wait for child */ exit(EXIT_SUCCESS); } } .EE .\" SRC END .SH "ZIE OOK" \fBfork\fP(2), \fBread\fP(2), \fBsocketpair\fP(2), \fBsplice\fP(2), \fBtee\fP(2), \fBvmsplice\fP(2), \fBwrite\fP(2), \fBpopen\fP(3), \fBpipe\fP(7) .PP .SH VERTALING De Nederlandse vertaling van deze handleiding is geschreven door Jos Boersema , Mario Blättermann en Luc Castermans . .PP Deze vertaling is vrije documentatie; lees de .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE of later over de Copyright-voorwaarden. Er is geen AANSPRAKELIJKHEID. .PP Indien U fouten in de vertaling van deze handleiding zou vinden, stuur een e-mail naar .MT debian-l10n-dutch@lists.debian.org .ME .