fcntl function