Por que a função é chamada lseek (), não seek ()?

9

A função C para procurar em um arquivo é chamada lseek (). Por que não se chama apenas seek ()?

Niccolo M.
fonte
2
O que isso retorna?
andy256
@ andy256 off_te se você quiser a 64 bit compensar você usalseek64
catraca aberração
1
@ratchetfreak er ... obrigado. A pergunta era para o benefício do OP, não meu :-)
andy256
Meu palpite é que é uma coisa evolutiva, apenas permanece do passado, onde havia uma distinção entre long e int.
ysap
3
O caractere extra foi adicionado para compensar o que faltava creat(). (Na verdade, o L provavelmente significa lógico.)
Blrfl

Respostas:

16

Parece que o 'l' em lseek significa 'long', para diferenciar de uma função de busca antiga na versão 2 do AT&T Unix. Este é um anacronismo antes da introdução do tipo off_t.

Referências de suporte:

http://infohost.nmt.edu/~eweiss/222_book/222_book/0201433079/ch03lev1sec6.html indica:

O caractere l no nome lseek significa "número inteiro longo". Antes da introdução do tipo de dados off_t, o argumento de deslocamento e o valor de retorno eram números inteiros longos. O lseek foi introduzido na versão 7 quando números inteiros longos foram adicionados a C. (Funcionalidade semelhante foi fornecida na versão 6 pelas funções see and tell.)

Conforme observado no rodapé de http://www.daemon-systems.org/man/lseek.2.html

 A seek() function appeared in Version 2 AT&T UNIX, later renamed into
 lseek() for ``long seek'' due to a larger offset argument type.
mc110
fonte
A intuição ainda funciona ... :-)
ysap 12/06