Για παράδειγμα η παρακάτω συνάρτηση αντιγράφει ένα αρχείο σε ένα άλλο (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); }