Κλήσεις ΛΣ για χρήση αρχείων

Η πρόσβαση στα αρχεία γίνεται μέσω κλήσεων στο λειτουργικό σύστημα. Οι σημαντικότερες από αυτές είναι:
create
Δημιουργία ενός νέου αρχείου
open
Αρχή της πρόσβασης στο αρχείο
read
Ανάγνωση από το αρχείο
write
Εγγραφή στο αρχείο
seek
Μετακίνηση του δείκτη στο αρχείο
close
Τέλος της πρόσβαση στο αρχείο
Η κλήσεις open και create επιστρέφουν κατά κανόνα έναν μικρό ακέραιο τον περιγραφέα του αρχείου (file descriptor) ο οποίος χρησιμοποιείται στη συνέχεια για κάθε άλλη κλήση που έχει σχέση με το συγκεκριμένο αρχείο. Με τον τρόπο αυτό απλουστεύεται η πρόσβαση στο αρχείο μέσω του ονόματός του.

Για παράδειγμα η παρακάτω συνάρτηση αντιγράφει ένα αρχείο σε ένα άλλο (Unix):

/*
 * Copy file specified by path1 to path2
 * Return 0 on success -1 on error
 * (dds)
 */
int
copyfile(char *path1, char *path2)
{
	char	buf[512];		/* Copy buffer */
	int	ifd, ofd;		/* File descriptors */
	int	nrbytes;		/* Bytes read */
	int	nwbytes;		/* Bytes written */
	struct	stat sbuf;		/* Attribute buffer */

	/* Get attributes of source file */
	if (stat(path1, &sbuf) == -1)
		return (-1);

	/* Open source file */
	if ((ifd = open(path1, O_RDONLY)) < 0)
		return (-1);

	/* Create destination file */
	if ((ofd = creat(path2, sbuf.st_mode & 0777)) < 0) {
		close(ifd);
		return (-1);
	}

	/* Copy source to destination in chunks */
	while ((nrbytes = read(ifd, buf, sizeof(buf))) > 0) {
		if ((nwbytes = write(ofd, buf, nrbytes)) != nrbytes) {
			nrbytes = -1;
			break;
		}
	}

	/* Close source file */
	if (close(ifd) < 0) {
		close(ofd);
		return (-1);
	}

	/* Close destination file */
	if (close(ofd) < 0) {
		return (-1);
	}

	/* Success! */
	return (0);
}