Read()
Siirry navigaatioon
Siirry hakuun
Read() on C-standardikirjaston tarjoama funktio, jolla voi lukea tietyn määrän dataa tiedostosta. Funktio kutsuu samannimisen järjestelmäkutsun. Kaikki korkeamman tason input-funktiot, kuten fgets(), käyttää Read-funktiota. Read-funtkio on määritelty seuraavasti:
ssize_t read(int fd, void *buf, size_t count);
Turvallisuus[muokkaa]
Read-funktio on huomattavasti turvallisempi kuin esimerkiksi scanf() tai gets(), koska se lukee vain tietyn määrän dataa. Siten ohjelmoija pystyy estämään ylivuodot.
Esimerkki[muokkaa]
Seuraava ohjelma lukee tiedoston /root/example.txt sisällön ilman virheenhallintaa:
#include <malloc.h>
#include <fcntl.h>
#include <unistd.h>
int main(int argc, char **argv) {
const char filename[] = "/root/example.txt";
off_t filesize;
off_t oldoffset;
int fd;
unsigned char *buf;
fd = open(filename, O_RDONLY);
oldoffset = lseek(fd, 0, SEEK_CUR);
filesize = lseek(fd, 0, SEEK_END);
lseek(fd, oldoffset, SEEK_SET);
buf = malloc(filesize);
read(fd, buf, filesize);
free(buf);
close(fd);
return 0;
}