#include #include #include #include #include #define PERM 0644 /* in UNIX */ int main (int argc, char **argv) { int fd; /* usiamo una sola variabile, tanto non ci serve agire contemporaneamente sui diversi file */ /* passiamo un solo parametro che ci servirà per identificare se è la prima volta che invochiamo questo programma */ if (argc != 2) { puts("Errore nel numero di parametri"); exit(1); } if ( (fd= open ("pippo", O_CREAT | O_WRONLY, PERM)) < 0 ) /* apertura in creazione */ { puts("Errore in creazione pippo"); exit(1); } else puts("Creato il file pippo"); /* scriviamo nel file appena creato distinguendo se è la prima volta o la seconda volta che invochiamo il programma */ if (strcmp(argv[1], "prima") == 0) write(fd, "questa e' la prima volta che scriviamo sul file\n", 49); else write(fd, "seconda volta che scriviamo su file\n", 36); if ( (fd= open ("paperino", O_CREAT | O_EXCL | O_WRONLY, PERM)) < 0 ) /* apertura in creazione solo se non esiste */ { puts("Il file paperino esiste"); } else { puts("Il file paperino non esisteva: creato"); write(fd, "questa e' la prima volta che scriviamo sul file\n", 49); } if ( (fd= open ("paperina", O_TRUNC | O_WRONLY)) < 0 ) /* apertura distruggendo il contenuto precedente */ { puts("Il file paperina non esiste"); exit(2); } else { puts("Il file paperina esisteva: troncato"); if (strcmp(argv[1], "prima") == 0) write(fd, "questa e' la prima volta che scriviamo sul file\n", 49); else write(fd, "seconda volta che scriviamo su file\n", 36); } return 0; }