Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

writev - in Datei schreiben

&pagelevel(4)&pagelevel

Definition

#include <sys/uio.h>

ssize_t writev(int fildes, const struct iovec *iov, size_t nbyte);

Beschreibung

writev() macht dasselbe wie write(), sammelt aber die Ausgabedaten der iovcnt-Puffer, die durch die Mitglieder der iov-Felder (iov[0], iov[1], ..., iov[iovcnt-1]) festgelegt sind. Es muss gelten 0 < iovcntIOV_MAX .

Für writev() enthält die Struktur iovec folgende Elemente:

caddr_t iov_base;
int     iov_len;

Jeder iovec-Eintrag gibt die Basisadresse und die Länge eines Speicherbereichs an, aus dem Daten geschrieben werden sollen. writev() schreibt immer einen vollständigen Bereich, bevor es zum nächsten übergeht.

Wenn fildes eine reguläre Datei bezeichnet und alle Elemente des Feldes iov den Wert 0 haben, gibt writev() den Wert 0 zurück und hat sonst keine Wirkung.

Wenn die Summe der iov_len-Werte SSIZE_MAX überschreitet, schlägt writev() fehl, und es werden keine Daten transferiert.

weitere Beschreibung: siehe write().

Returnwert

Anzahl der tatsächlich geschriebenen Bytes



bei Erfolg.

 

-1

bei Fehler. In diesem Falle wird der Dateizeiger nicht verändert. errno wird gesetzt, um den Fehler anzuzeigen.

Fehler

siehe write(). Zusätzlich zu den dort angegebenen Fehlern schlägt writev() fehl, wenn gilt:

 

EINVAL

iovcnt war kleiner oder gleich 0 oder größer gleich 16, oder einer der iov_len-Werte im iov-Feld war negativ, oder die Summe der iov_len-Werte im iov-Feld erzeugt einen Überlauf bei einer 32-Bit Ganzzahl.

 

EINVAL

fildes ist einer BS2000-Datei zugeordnet..


writev() schlägt auch dann fehl, wenn vor dem Aufruf eine asynchrone Fehlermeldung am STREAM-Kopf auftritt. In diesem Falle bezieht sich der Wert von errno nicht auf writev(), sondern auf den vorhergehenden STREAM-Fehler.

Siehe auch

chmode(), creat(), dup(), fcntl(), getrlimit(), lseek(), open(), pipe(), ulimit(), limits.h, stropts.h, sys/uio.h, unistd.h.