pokusavam da izvucem zadnjih par megabajta iz jednog velikog fajla (>2GB).
OS je RedHat, kernel 2.4.21-32.0.1.ELsmp (viseprocesorska masina, Intel Xeoni na 3.6GHz).
fajl sistem na toj particiji je ext3 (kazu da uredno podrzava LFS). glibc > 2.3.2.
svi fajlovi u tom diru imaju -rw-r--r-- dozvole.
probam kao root da otvorim file i dobijem permission denied za fajl veci od 2GB
(manji od 2GB se uredno otvori).
u cemu je caka? tj. kako da otkrijem u cemu je caka :)
evo kako izgleda deo koda (varijanta sa fopen/fopen64 isto ne radi):
Code:
#define _LARGEFILE_SOURCE
#define _LARGEFILE64_SOURCE
#define _FILE_OFFSET_BITS 64
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#define BUF_SIZE 8192
int main(int argc, char * argv[])
{
int log, extract;
...
if ((log = open(argv[1], O_RDONLY | O_LARGEFILE)) == -1) {
perror("open");
return -1;
}
...
return 0;
}
#define _LARGEFILE_SOURCE
#define _LARGEFILE64_SOURCE
#define _FILE_OFFSET_BITS 64
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#define BUF_SIZE 8192
int main(int argc, char * argv[])
{
int log, extract;
...
if ((log = open(argv[1], O_RDONLY | O_LARGEFILE)) == -1) {
perror("open");
return -1;
}
...
return 0;
}
milan