/*************************************************************************** * * Questo esercizio mostra come eseguire fork dup ed exec per ridirigere * il comando ls su un file * ***************************************************************************/ #include #include #include #include #include #include int main(){ int status; int pid = fork(); if (pid < 0) perror("Errore nella fork"); else if (pid > 0){ /* codice del padre */ printf("Sono il processo padre, il mio PID=%d, mio figlio ha PID=%d\n",getpid(), pid); /*attesa della terminazione del figlio*/ wait(&status); } else { /* codice del figlio */ char * nomeFile = "output.txt"; int fd; sleep(3); printf("Sono il figlio, il mio PID=%d, mio padre ha PID=%d \n", getpid(), getppid()); printf("Apro il file %s ed eseguo ls -al\n",nomeFile); fd = open(nomeFile,O_WRONLY | O_CREAT,0660); /* close(1); /* Chiudo STDOUT */ dup(fd); execlp("ls","ls","-al",NULL); printf("questo codice verra' eseguito SOLO se la exec fallisce\n"); } }