linux-l: 4 GB - Datei

Volker Mueller volker.mueller at gmx.de
Mo Okt 9 20:23:02 CEST 2000


On Mon, 9 Oct 2000, Soeren Sonnenburg wrote:

[... unlink mit C ...]

... und genauso sollte es doch moeglich sein, das File wieder an tar
zu verfuettern:

/* file: tostream.c */
#include <stdlib.h>
#include  <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

/* use int main(...argc...argv) instead of "void main(void)"! */
void main(void) {
  int fd;
  int c;
  int count;
  int tmp;

  /* use argv[1] instead of "/tmp/..."! */
  fd = open("/tmp/tostream.c", O_RDONLY); 
  do {
    count = read(fd, &c, 1);
    tmp = write(1 /* (stdout) */, &c, 1);
  } while (count > 0);
}

(Wobei bei open() natuerlich argv[1] ausgewertet und der Name 
my_very_large_file.tar verwendet werden sollte (hatte grade keine Lust dazu).
Das da oben ist natuerlich _so_ nicht unbedingt _die_ Loesung, sondern nur
eine Idee ...)

und die Ausgabe von stdout nach tar umleiten, das dann von stdin liest:

prompt> tostream my_very_large_file.tar | tar -xf -

Oder so aehnlich (kanns nicht testen, da ich keine Files >2GB habe).

Volker

-- 
volker at flinux:~[535]> echo "#include <stdio.h>
#define N 4 + 5
#define Z 7 + 3
void main (void) { printf(\"%i * %i = %i\n\", N, Z, N * Z); }">_.c;make _;./_



Mehr Informationen über die Mailingliste linux-l