Warum heißt die Funktion lseek (), nicht seek ()?


9

Die C-Funktion zum Suchen in einer Datei heißt lseek (). Warum heißt es nicht einfach suchen ()?


2
Was gibt es zurück?
— andy256

@ andy256 off_tund wenn Sie den 64-Bit-Offset wollen, den Sie verwendenlseek64
— Ratschenfreak

1
@ratchetfreak äh ... danke. Die Frage war für das OP, nicht für
— mich

Ich vermute, dass es sich um eine evolutionäre Sache handelt, die nur aus der Vergangenheit stammt, in der zwischen long und int unterschieden wurde.
— Ysap

3
Das zusätzliche Zeichen wurde hinzugefügt, um das fehlende Zeichen auszugleichen creat(). (Eigentlich steht das L wahrscheinlich für logisch.)
— Blrfl

Antworten:


16

Es scheint, dass das 'l' in lseek 'lang' bedeutet, um sich von einer alten Suchfunktion in Version 2 von AT & T Unix zu unterscheiden. Dies ist ein Anachronismus, bevor der Typ off_t eingeführt wurde.

Unterstützende Referenzen:

http://infohost.nmt.edu/~eweiss/222_book/222_book/0201433079/ch03lev1sec6.html gibt Folgendes an:

Das Zeichen l im Namen lseek bedeutet "lange Ganzzahl". Vor der Einführung des Datentyps off_t waren das Offset-Argument und der Rückgabewert lange Ganzzahlen. lseek wurde mit Version 7 eingeführt, als lange Ganzzahlen zu C hinzugefügt wurden. (Ähnliche Funktionen wurden in Version 6 durch die Funktionen seek and tell bereitgestellt.)

Wie am Fuße von http://www.daemon-systems.org/man/lseek.2.html angegeben

 A seek() function appeared in Version 2 AT&T UNIX, later renamed into
 lseek() for ``long seek'' due to a larger offset argument type.

Intuition funktioniert immer noch ... :-)
— ysap
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.