text: /***********************************************************************
  * Code listing from "Advanced Linux Programming," by CodeSourcery LLC  *
  * Copyright (C) 2001 by New Riders Publishing                          *
  * See COPYRIGHT for license information.                               *
  ***********************************************************************/
  
  #include <fcntl.h>
  #include <stdlib.h>
  #include <sys/stat.h>
  #include <sys/types.h>
  #include <unistd.h>
  
  int main (int argc, char* argv[])
  {
    int zero = 0;
    const int megabyte = 1024 * 1024;
  
    char* filename = argv[1];
    size_t length = (size_t) atoi (argv[2]) * megabyte;
  
    /* Open a new file.  */
    int fd = open (filename, O_WRONLY | O_CREAT | O_EXCL, 0666);
    /* Jump to one byte short of where we want the file to end.  */
    lseek (fd, length - 1, SEEK_SET);
    /* Write a single zero byte.  */
    write (fd, &zero, 1);
    /* All done.  */
    close (fd);
  
    return 0;
  }
  