#include #include #include #include #include #include #include int main(void) { int i, fd, test; struct stat file_data; char buf[]="0123456789"; if((fd = open("FILE1", O_RDWR | O_CREAT | O_TRUNC, 0644)) < 0) printf("\n Errore in apertura\n"); for(i = 1; i < 1000; i++) write(fd, buf, 10); if((test = fstat(fd,&file_data)) < 0) printf("\n Errore %d nel tentativo di usare fstat\n ", errno); printf("\n Il numero di link per FILE1 risulta %d\n", (int) file_data.st_nlink); close(fd); if((i=link("FILE1", "FILE2")) < 0) printf("\n errore nella creazione del link\n"); printf("\n Ho linkato FILE2 a FILE1: link(\"FILE1\", \"FILE2\") \n"); if((test = stat("FILE1",&file_data)) < 0) printf("\n Errore nel tentativo di usare fstat\n"); printf("\n Il numero di link per FILE1 risulta %d\n", (int) file_data.st_nlink); printf("\n Adesso provo a creare un link symbolico: FILE3 --> FILE1\n"); if((i=symlink("FILE1", "FILE3")) < 0) printf("\n errore nella creazione del link symbolico\n"); printf("\n Ho creato FILE3\n"); if((test = stat("FILE1",&file_data)) < 0) printf("\n Errore nel tentativo di usare fstat\n"); printf("\n Il numero di link per FILE1 risulta %d\n", (int) file_data.st_nlink); printf("\n Infine, dai un'occhiata alla directory: ls -l FILE*\n"); system("ls -l FILE*"); } int essential_my_rename(const char *from, const char *to) // funzione di rename { if(link(from, to) < 0) return(-1); unlink(from); return(0); } // Provare a modificare la funzione in modo da // gestire tutti gli errori cosi' come fa la funzione rename // vedere i dettagli sugli errori ritornati da rename in // man 2 rename