dup

From RAD Studio
Jump to: navigation, search

Go Up to 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++

+

+