open (Debugging with GDB)

From Get docs
Gdb/docs/latest/gdb/open


open

Synopsis:
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
Request:

Fopen,pathptr/len,flags,mode

flags is the bitwise OR of the following values:

O_CREAT

If the file does not exist it will be created. The host rules apply as far as file ownership and time stamps are concerned.

O_EXCL

When used with O_CREAT, if the file already exists it is an error and open() fails.

O_TRUNC

If the file already exists and the open mode allows writing (O_RDWR or O_WRONLY is given) it will be truncated to zero length.

O_APPEND

The file is opened in append mode.

O_RDONLY

The file is opened for reading only.

O_WRONLY

The file is opened for writing only.

O_RDWR

The file is opened for reading and writing.

Other bits are silently ignored.

mode is the bitwise OR of the following values:

S_IRUSR

User has read permission.

S_IWUSR

User has write permission.

S_IRGRP

Group has read permission.

S_IWGRP

Group has write permission.

S_IROTH

Others have read permission.

S_IWOTH

Others have write permission.

Other bits are silently ignored.

Return value:

open returns the new file descriptor or -1 if an error occurred.

Errors:
EEXIST

pathname already exists and O_CREAT and O_EXCL were used.

EISDIR

pathname refers to a directory.

EACCES

The requested access is not allowed.

ENAMETOOLONG

pathname was too long.

ENOENT

A directory component in pathname does not exist.

ENODEV

pathname refers to a device, pipe, named pipe or socket.

EROFS

pathname refers to a file on a read-only filesystem and write access was requested.

EFAULT

pathname is an invalid pointer value.

ENOSPC

No space on device to create the file.

EMFILE

The process already has the maximum number of files open.

ENFILE

The limit on the total number of files open on the system has been reached.

EINTR

The call was interrupted by the user.