open() Open a File
#include <fcntl.h>
#include <sys\types.h>
#include <sys\stat.h>
#include <io.h> Required for declarations only
int open(pathname,oflag[,pmode]);
char *pathname; File path name
int oflag; Type of operations allowed
int pmode; Permission setting
open() opens the file specified by 'pathname'. The 'oflag' argument
specifies how the file is to prepared for reading or writing; 'oflag'
is a combination of one or more of the following constants, defined
in fcntl.h. (To specify multiple constants, join them with the
bit-wise OR operator.)
O_APPEND Reposition file pointer to end-of-file before every
write operation.
O_CREAT Create and open a new file for writing. (No effect if
the file 'pathname' already exists.)
O_EXCL Used only with O_CREAT to return an error value if
'pathname' already exists.
O_RDONLY Open file for reading only.
O_RDWR Open file for both reading and writing. (If this flag
is specified, neither O_RDWR nor O_WRONLY may be
specified.)
O_TRUNC Open and truncate an existing file to 0 length. The
file must have write permission. The contents of the
file are destroyed.
O_WRONLY Open file for writing only. (May not be specified
with either O_RDONLY or O_RDWR.)
O_TEXT Open file in text (translated) mode. In text mode,
CR-LF is translated to a single LF when reading; LF
is translated to CR-LF when writing.
O_BINARY Open file in binary (untranslated) mode. In
untranslated mode, the translation of CR-LF described
under O_TEXT is suppressed.
The 'pmode' argument is required only when O_CREAT is used. 'pmode'
specifies the file's permission setting. (If the file already exists,
'pmode' is ignored.) 'pmode' is set using the following constants:
S_IWRITE Writing permitted
S_IREAD Reading permitted
S_IREAD | S_IWRITE Reading and writing permitted
Returns: A file handle for the opened file, or -1 if an error
occurs. If an error occurs, 'errno' is set to one of the
following:
EACCES: Pathname is a directory; or tried to open a read-only
file for writing (or a sharing violation occurred;
this can occur only in DOS 3.0 and above).
EEXIST: O_CREAT and O_EXCL flags are specified but the file
already exists.
EMFILE: No more handles available (too many open files).
ENOENT: File or path name not found.
Notes: O_TRUNC completely destroys existing files; use it with
care.
-------------------------------- Example ---------------------------------
This example opens an existing file for input. Upon success it
creates a new file for output.
#include <fcntl.h>
#include <sys\types.h>
#include <sys\stat.h>
#include <io.h>
#include <stdlib.h>
main()
{
int inhndl, outhndl;
if ((inhndl = open("info.dat",O_RDONLY)) == -1)
{
perror("Can't open input file");
exit(1);
}
else if ((outhndl =
open("data.dat",O_CREAT|O_EXCL,S_IREAD|S_IWRITE)) == -1)
{
perror("Can't open file for output");
exit(1);
}
}
Seealso:
This page last updated on Fri Nov 30 10:48:32 MSK 2001
Copyright © 1992-2001, Vitaly Filatov, Moscow, Russia
Webmaster