/* fichier ecriture.c
créé par Yann GUIDON (whygee@f-cpu.org)
Sun Jul 31 07:54:20 CEST 2005

 fonction :
   écrit un fichier de 618136176 octets le plus vite possible

 compilation :
   gcc -Wall -g -o ecriture ecriture.c

 invocation :
   ecriture
*/

#define _FILE_OFFSET_BITS 64
#define _LARGEFILE_SOURCE
#define _LARGEFILE64_SOURCE

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>  /* open() */
#include <errno.h>  /* perror() */
#include <stdio.h>  /* fprintf(), fflush() */
#include <stdlib.h> /* malloc() */
#include <unistd.h> /* exit(), read() */

#define BUFFER_SIZE (1839691)
#define BUFFER_NB  (7*3*2*2*2*2)

int main (int argc, char *argv[]) {
  off_t buffsize=BUFFER_SIZE;
  int fd_out, i;
  ssize_t t=0;
  char *buffer;

  fd_out = open("/common/t0", O_CREAT|O_WRONLY);
  if (fd_out == -1) {
    perror("Erreur à l'ouverture de la destination");
    exit(EXIT_FAILURE);
  }

  buffer=malloc(buffsize);
  if (buffer == NULL) {
    perror("Erreur de malloc() ");
    exit(EXIT_FAILURE);
  }

  for (i=0; i<BUFFER_NB; i++) {
    t=write(fd_out, buffer, BUFFER_SIZE);
    if (t < BUFFER_SIZE) {
      perror("Erreur d'écriture");
      exit(EXIT_FAILURE);
    }
  }

  exit(EXIT_SUCCESS);
}
