Low-Level I/O
Important This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here. ArchiveDisclaimer

Low-Level I/O

These functions invoke the operating system directly for lower-level operation than that provided by stream I/O. Low-level input and output calls do not buffer or format data.

Low-level routines can access the standard streams opened at program startup using the following predefined file descriptors.

Stream File Descriptor
stdin 0
stdout 1
stderr 2

Low-level I/O routines set the errno global variable when an error occurs. You must include STDIO.H when you use low-level functions only if your program requires a constant that is defined in STDIO.H, such as the end-of-file indicator (EOF).

Low-Level I/O Functions

Function Use
_close Close file
_commit Flush file to disk
_creat, _wcreat Create file
_dup Return next available file descriptor for given file
_dup2 Create second descriptor for given file
_eof Test for end of file
_lseek, _lseeki64 Reposition file pointer to given location
_open, _wopen Open file
_read Read data from file
_sopen, _wsopen Open file for file sharing
_tell, _telli64 Get current file-pointer position
_umask Set file-permission mask
_write Write data to file

_dup and _dup2 are typically used to associate the predefined file descriptors with different files.

See Also

Input and Output | Run-Time Routines by Category | Run-Time Routines and .NET Framework Equivalents

© 2015 Microsoft