File I/O

 manga manga
3 min read

I have seen the light so here we go;

In this article, I will be discussing the system calls(functions) relating to file descriptors and the parameters they take.

File descriptor

File descriptor (fd) - It is a non-negative integer that is returned by the operating system when a file or device is opened by an application. It's used to read data from a file, write data to a file, or perform other I/O operations on the file.

Standard I/O streams and their file descriptors

  • Standard input (stdin)/ STDIN_FILENO

it is used to read input from the user (keyboard). Its fd is 0

  • Standard output (stdout)/ STDOUT_FILENO

It is used to write output to the user (screen). Its fd is 1

  • Standard error (stderr)/ STDERR_FILENO

it is used to write error messages or diagnostic output to the user (terminal/screen). Its file descriptor is 2

Open or Create a File

The open() function opens a file and returns the file descriptor that can be used for subsequent I/O operations and returns -1 on error.

prototype;

int open(const char* pathname, int flags); // Open an existing file
int open(const char* pathname, int flags, [mode_t mode]); // Open or create a file if it does not exist

pathname - A pointer to a null-terminated string which is the path to the file you want to open.

flags - An int that specifies the mode in which the file should be opened. O_RDONLY (open for reading), O_WRONLY (open for writing), O_RDWR (open for both reading and writing).

other flags;

O_CREAT opens and creates the file if it does not exist.

O_CREAT | O_EXCL Create the file and fail if the file already exists.

O_APPEND specifies that all write operations should append data to the end of the file instead of overwriting existing data.

mode- An argument that specifies the file permissions to use if the file is being created with the 0_CREATE flag to set the file's initial permissions. These modes S_IRUSR S_IWUSR S_IRGRP S_IWGRP allow the current user and group to read or write the file respectively. It is optional so if you are not creating a file you can ignore it.

Read from a file descriptor

The read() function is used to read bytes from a file or file descriptor into a buffer and returns the number of bytes read, if any. Returns 0 at end of the file and -1 on error.

prototype;

ssize_t read(int fd, void *buffer, size_t size);

fd - integer file descriptor representing the file to read from.

buffer - A pointer to a memory area where the read data will be stored.

size - An integer that specifies the maximum number of bytes to be read. Size corresponds to the size of the memory area indicated in the buffer

Write to a file descriptor

The write() function is used to write data to a file or file descriptor. It returns the number of bytes written or -1 if an error occurs.

prototype;

ssize_t write(int fd, const void *buffer, size_t size);

fd - An integer file descriptor representing the file to write to.

buffer - A pointer to a memory area that contains the data to write.

size - An integer that specifies the number of bytes to write.

Close a file decriptor

Close(), as it sounds, closes the file descriptor.

Parameter;

int close(int fd);

Further reading

I know want to go towards the light, This is the path.

Good luck.

17
Subscribe to my newsletter

Read articles from manga directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

 manga
manga

I am anything that involves data and tech.