dup

De RAD Studio
Aller à : navigation, rechercher

Remonter à Io.h - Index


Header File

io.h

Category

Input/output Routines

Prototype

int dup(int handle);

Description

Duplicates a file handle.

  • dup creates a new file handle that has the following in common with the original file handle:
  • Same open file or device
  • Same file pointer (that is, changing the file pointer of one changes the other)
  • Same access mode (read, write, read/write)

handle is a file handle obtained from a call to creat, open, dup, dup2, _rtl_creat, or _rtl_open.

Return Value

Upon successful completion, dup returns the new file handle, a nonnegative integer; otherwise, dup returns -1.

In the event of error, the global variable errno is set to one of the following values:

EBADF

Bad file number

EMFILE

Too many open files

Example

 #include <string.h>
 #include <stdio.h>
 #include <io.h>
 void flush(FILE *stream);
 int main(void)
 {
   FILE *fp;
   char msg[] = "This is a test";
   /* create a file */
   fp = fopen("DUMMY.FIL", "w");
   /* write some data to the file */
   fwrite(msg, strlen(msg), 1, fp);
   printf("Press ENTER to flush DUMMY.FIL:");
   getchar();
   /* flush the data to DUMMY.FIL without closing it */
   flush(fp);
   printf("\nFile was flushed, Press ENTER to quit:");
   getchar();
   return 0;
 }
 void flush(FILE *stream)
 {
   int duphandle;
   /* flush TC's internal buffer */
   fflush(stream);
   /* make a duplicate file handle */
   duphandle = dup(fileno(stream));
   /* close the duplicate handle to flush the DOS buffer */
   close(duphandle);
 }

Portability

POSIX Win32 ANSI C ANSI C++

+

+