関数がseek()ではなくlseek()と呼ばれるのはなぜですか?


9

ファイルをシークするためのC関数はlseek()と呼ばれます。なぜそれは単にseek()を呼び出さないのですか?


2
それは何を返しますか?
andy256 2014年

@ andy256 off_tおよび64ビットのオフセットが必要な場合は、使用しますlseek64
ラチェットフリーク

1
@ratchetfreak er ...ありがとう。問題はOPの利益であり、私のものではありませんでした:-)
andy256

私の推測では、これは進化論的なものであり、longとintの違いがあった過去から残っています。
ysap 2014年

3
の欠けている文字を補うために、追加の文字が追加されましたcreat()。(実際には、Lはおそらく論理を意味します。)
Blrfl

回答:


16

AT&T Unixのバージョン2の古いシーク関数と区別するために、lseekの「l」は「長い」を意味するようです。これは、off_tタイプが導入される前の時代錯誤です。

参考資料:

http://infohost.nmt.edu/~eweiss/222_book/222_book/0201433079/ch03lev1sec6.htmlは、次のことを示しています。

名前lseekの文字lは「長整数」を意味します。off_tデータ型が導入される前は、オフセット引数と戻り値は長整数でした。lseekは、Cに長整数が追加されたときにバージョン7で導入されました(類似の機能は、関数seekおよびtellによってバージョン6で提供されていました)。

ふもとに述べたように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.

直感はまだ機能します... :-)
ysap
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.