RAD Studio |  |

dup

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

Copy Code

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

Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
What do you think about this topic? Send feedback!