Mono Class Library: Mono.Unix.Native.Stdlib Overview | Members

Mono.Unix.Native.Stdlib.freopen Method

Reopen a FILE stream. [Edit]

public static IntPtr freopen (string path, string mode, IntPtr stream)

Parameters

path
The filename to open. [Edit]
mode
The file mode for opening. See the Remarks section for more details. [Edit]
stream
The FILE stream to reopen. [Edit]

Returns

Upon successful completion, returns a FILE pointer. Otherwise, IntPtr.Zero is returned and Stdlib.GetLastError indicates the error.

Usage

The following errors are specified:

ErrorDetails
Errno.EINVALThe mode argument was invalid.

freopen may also fail for any of the error specified for the routines Stdlib.malloc(3), Syscall.open(2), Stdlib.fclose(3), and Stdlib.fflush(3).

[Edit]

Remarks

The freopen() function opens the file whose name is the string pointed to by path and associates the stream pointed to by stream with it. The original stream (if it exists) is closed.

Use Stdlib.fclose to close the returned FILE stream.

The argument mode points to a string beginning with one of the following sequences (Additional characters may follow these sequences.):

modeDescription
"r" Open text file for reading. The stream is positioned at the beginning of the file.
"r+"Open for reading and writing. The stream is positioned at the beginning of the file.
"w"Truncate file to zero length or create text file for writing. The stream is positioned at the beginning of the file.
"w+"Open for reading and writing. The file is created if it does not exist, otherwise it is truncated. The stream is positioned at the beginning of the file.
"a"Open for writing. The file is created if it does not exist. The stream is positioned at the end of the file. Subsequent writes to the file will always end up at the then current end of file, irrespective of any intervening Stdlib.fseek(3) or similar.
"a+"Open for reading and writing. The file is created if it does not exist. The stream is positioned at the end of the file. Subsequent writes to the file will always end up at the then current end of file, irrespective of any intervening Stdlib.fseek(3) or similar.

The mode string can also include the letter "b" either as a third character or as a character between the characters in any of the two-character strings described above, and is used to enable binary reading/writing on platforms which have different text/binary encodings (read: Microsoft Windows). The default (non-bmode) is text encoding.

If the path argument is null, freopen() attempts to re-open the file associated with stream with a new mode. The new mode must be compatible with the mode that the stream was originally opened with:

  • Streams originally opened with mode "r" can only be reopened with that same mode.
  • Streams originally opened with mode "a" can be reopened with the same mode, or mode "w".
  • Streams originally opened with mode "w" can be reopened with the same mode, or mode "a".
  • Streams originally opened with mode "r+", "w+", or "a+" can be reopened with any mode.

The primary use of the freopen() function is to change the file associated with a standard text stream (Stdlib.stderr, Stdlib.stdin, or Stdlib.stdout).

[Edit]

Requirements

Namespace: Mono.Unix.Native
Assembly: Mono.Posix (in Mono.Posix.dll)
Assembly Versions: 1.0.5000.0, 2.0.0.0