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);
}