File system
File system open
// INCLUDE
#include <fcntl.h>
// PROTOTYPE
int open(const char* pathname, int flags, ... /* arg */)
// EXAMPLE
int fd = open("/FileSystemTest/test1.txt", O_RDWR | O_CREAT | O_TRUNC);
if (fd != -1) {
for(int ii = 0; ii < 100; ii++) {
String msg = String::format("testing %d\n", ii);
write(fd, msg.c_str(), msg.length());
}
close(fd);
}
Open a file for reading or writing, depending on the flags.
pathname
: The pathname to the file (Unix-style, with forward slash as the directory separator).flags
: These flags specify the read or write mode:O_RDWR
: Read or write.O_RDONLY
: Read only.O_WRONLY
: Write only.
These optional flags can be logically ORed with the read/write mode:
O_CREAT
: The file is created if it does not exist (see alsoO_EXCL
).O_EXCL
: IfO_CREAT | O_EXCL
are set, then the file is created if it does not exist, but returns -1 and setserrno
toEEXIST
if file already exists.O_TRUNC
If the file exists and is opened in modeO_RDWR
orO_WRONLY
it is truncated to zero length.O_APPEND
: The file offset is set to the end of the file prior to each write.
Returns: A file descriptor number (>= 3) or -1 if an error occurs.
On error, returns -1 and sets errno
. Some possible errno
values include:
EINVAL
Pathname was NULL, invalid flags.ENOMEM
Out of memory.EEXIST
File already exists when usingO_CREAT | O_EXCL
.
When you are done accessing a file, be sure to call close
on the file descriptor.
Opening the same path again without closing opens up a new file descriptor each time, as is the case in UNIX.