php_stream_seek

php_stream_seek -- ストリーム内で移動する

説明

int php_stream_seek ( php_stream * stream, off_t offset, int whence )

php_stream_seek()stream の内部位置を移動します。 新しい位置は、offset の値を、 whence で示された位置に加算することで決定されます。 whenceSEEK_SET にセット されていた場合は、ストリームの開始位置を、SEEK_CUR の場合は、ストリームの現在位置を、SEEK_END の場合は、 ストリームの終端位置を、それぞれ計算の基準とします。

php_stream_seek() は成功時に 0 を、失敗時に -1 を 返します。

注意: すべての種類のストリームがシーク動作をサポートしているわけでは ありませんが、ストリーム API は、whence SEEK_CUR に設定されていて、かつ offset が正の値の場合、 php_stream_read()offset バイト分だけ読み込んで、読み込まれた内容を破棄することで、シークを エミュレートしようとします。

エミュレーションは、下層にあるストリームの実装が、シークをサポート していないときのみに行われます。つまり、仮に開かれているストリームが ファイルベースのストリームで、それがシークできないパイプを ラップしていたとしても、ストリーム API はエミュレーションを行いません。 ファイルベースのストリームはシーク動作を実装しているからです。 このとき、シークは失敗し、エラーが呼び出し元に返されます。