home *** CD-ROM | disk | FTP | other *** search
/ ftp.disi.unige.it / 2015-02-11.ftp.disi.unige.it.tar / ftp.disi.unige.it / pub / .person / GianuzziV / SO1 / fork1.c < prev    next >
C/C++ Source or Header  |  2001-11-07  |  702b  |  31 lines

  1. /* fork1.c */
  2.  
  3. #include <fcntl.h>
  4. int    fdrd, fdwt;
  5. char    c;
  6.  
  7. /* Due processi leggono da un file e scrivono su di un altro.
  8.    Il file di output e' uguale a quello di input 
  9.    ma con i caratteri mescolati a seconda della schedulazione */
  10.  
  11. main (argc, argv)
  12.    int     argc;
  13.    char    *argv[];
  14. {  if (argc != 3) exit(1);
  15.    if ((fdrd = open (argv[1], O_RDONLY)) == -1) 
  16.          exit(1);
  17.    if ((fdwt = creat(argv[2], 0666)) == -1)
  18.          exit(1);
  19.    fork();    /* Entrambe i processi eseguono lo stesso codice.
  20.                  Non c'e' controllo sulla corretta esecuzione di fork */
  21.    rdwrt();
  22.    exit(0);
  23. }
  24.  
  25. rdwrt ()
  26. {  for (;;)
  27.    { if (read (fdrd, &c, 1) != 1) return;
  28.      write (fdwt, &c, 1);
  29.    }
  30. }
  31.