dup
Nach oben zu io.h - Index
Header-Datei
io.h
Kategorie
Eingabe-/Ausgaberoutinen
Prototyp
int dup(int handle);
Beschreibung
Dupliziert ein Datei-Handle.
- dup erstellt ein neues Datei-Handle, das mit dem ursprünglichen Datei-Handle Folgendes gemeinsam hat:
- Dieselbe geöffnete Datei bzw. dasselbe Gerät
- Derselbe Dateizeiger (d. h. wenn der Dateizeiger einer Datei geändert wird, wird auch der der anderen Datei geändert)
- Derselbe Zugriffsmodus (Lesen, Schreiben, Lesen/Schreiben)
Das Argument handle enthält ein Datei-Handle, das durch einen Aufruf von creat, open, dup, dup2, _rtl_creat oder _rtl_open abgerufen wurde.
Rückgabewert
Bei erfolgreicher Ausführung gibt dup das neue Datei-Handle (eine nicht negative Ganzzahl) zurück, andernfalls -1.
Bei einem Fehler wird die globale Variable errno auf einen der folgenden Werte gesetzt:
EBADF |
Bad file number (Falsche Dateinummer) |
EMFILE |
Too many open files (Zu viele Dateien geöffnet) |
Beispiel
#include <string.h>
#include <stdio.h>
#include <io.h>
void flush(FILE *stream);
int main(void)
{
FILE *fp;
char msg[] = "This is a test";
/* Eine Datei erstellen */
fp = fopen("DUMMY.FIL", "w");
/* Daten in die Datei schreiben */
fwrite(msg, strlen(msg), 1, fp);
printf("Press ENTER to flush DUMMY.FIL:");
getchar();
/* Pufferinhalt schreiben, ohne DUMMY.FIL zu schließen */
flush(fp);
printf("\nFile was flushed, Press ENTER to quit:");
getchar();
return 0;
}
void flush(FILE *stream)
{
int duphandle;
/* In den internen Puffer des Streams schreiben */
fflush(stream);
/* Duplikat des Datei-Handles erstellen */
duphandle = dup(fileno(stream));
/* Duplikat schließen, um den DOS-Pufferinhalt zu schreiben */
close(duphandle);
}
Portabilität
POSIX | Win32 | ANSI C | ANSI C++ |
---|---|---|---|
+ |
+ |