open

Opens a file or directory and returns a file descriptor for the opened object.

Library:LibC
Classification:POSIX
Service:File and Directory I/O

Syntax

  #include <fcntl.h> 
   
  int open (
     const char   *path,
     int           oflag,
     ...);
  

Parameters

path

(IN) Points to the path and name of the file or directory to open.

oflag

(IN) Specifies the open access mode. See File Control Open Modes.

...

(IN) Specifies an optional mode argument when the O_CREAT flag is specified in oflag. See File Access Modes and NetWare Attributes.

Return Values

If successful, returns a file descriptor, which is a non-negative integer. If an error occurs, returns -1 and sets errno to one of the following values:

Decimal

Constant

Description

1

ENONENT

No such file. O_CREAT is not set and the named file does not exist; or O_CREAT is set and either the path prefix does not exist or the path argument points to an empty string.

5

ENOMEM

The system is unable to allocate resources.

6

EACCES

Permission denied.

7

EEXIST

The named file exists and O_CREAT and O_EXCL are set.

9

EINVAL

Invalid parameter.

10

ENFILE

The maximum allowable number of files is currently open in the system.

11

EMFILE

The maximum number of files are currently open.

12

ENOSPC

There is no space left on the device to create the file.

25

ENXIO

The device does not exist.

28

EIO

A physical I/O error occurred.

63

EINTR

A signal was caught during the execution of the function.

64

EISDIR

The specified file is a directory and oflag includes O_WRONLY or O_RDWR.

65

ENAMETOOLONG

The length of the path parameter exceeds the maximum allowed length, or a component of the path parameter is longer than the maximum name length.

67

ENOTDIR

A component specified in the path parameter is not a directory.

76

EROFS

The named file resides on a read-only file system.

81

EOVERFLOW

The operation would overflow.

Remarks

The open function returns a file descriptor that refers to a file or directory. The path parameter supplies the name of the object to open. The object is accessed according to the access mode specified by the oflag parameter.

If you opened a file, you can pass the file descriptor to other POSIX functions to perform operations on the file, such as reading and writing.

If you opened a directory, you can pass the file descriptor to the fchdir function. It does not work with any other function in LibC. This functionality was not added until July 2004. To use it, your libcthreshold needs to be greater than 405260000.

If the O_CREAT flag is set in the oflag parameter, the third parameter is a mode parameter of type mode_t. For the flags to use with this parameter, see File Access Modes and NetWare Attributes.

See Also