dup

Aus RAD Studio
Wechseln zu: Navigation, Suche

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++

+

+