En supposant qu'au départ on se trouve à la fin du fichier et que le fichier se termine par un caractère de fin de ligne, à chaque étape, grâce à Unix.lseek et Unix.read, on lit les buffer_size caractères précédents; on compte le nombre de retours à la ligne qu'ils contiennent; s'il y en a au moins N+1, on affiche les N lignes correspondantes et on termine; sinon, on recommence.