Funkcja close() zwalnia deskryptor pliku, tze moze byc on powtornie przydzielony. Jesli deskryptor jest ostatnim, ktory odnosi sie do danej pozycji w tablicy plikow, wowczas pozycja ta jest rowniez zwalniana.Zdejmowane sa wszelkie blokady zalozone przez proces na pliku.
int close(int fd)
Wynik - 0 w przypadku sukcesu lub -1 w przypadku bledu(errno przyjmuje wartosc EBADF - fd nie jest prawidlowym deskryptorem otwartego pliku)
fd - deskryptor zamykanego pliku.
int close(int fd)
{ filp=fd[fd];/* tablica fd-tablica deskryptorow procesu;filp-wskaznik do pozycji w t.p.(tablicy plikow)odpowiadajacy zwalnianemu deskryptorowi*/ fd[fd]=NULL; inode=filp->f_inode; /* inode- i-wezel zamykanego pliku*/ locks_remove_locks();/* zdjecie blokad na pliku zalozonych przez proces*/; filp->fcount--; /* zmniejszamy licznik odwolan do pozycji w t.p.*/ if(fcount>0) /* ktos jeszcze korzysta z tej pozycji w t.p.*/ return(0); filp->f_inode=NULL;/* zwalniamy pozycje w t.p. */ if(zwalniany plik otwieralismy do pisania) inode->i_writecount--; iput(inode); return(0); }