2010-12-07 73 views
2

我試圖寫一個FUSE文件系統,將流媒體音樂呈現爲mp3文件。我不想在讀取ID3v1.1標籤時開始流式傳輸音頻,因此我使用direct_io和max_readahead = 0裝入文件系統。FUSE fseek與direct_io的意外行爲

但是,當我做到這一點(這也是libid3tag做什麼),我得到的2752個字節讀取與偏移-2880個字節的結尾:

char tmp[255]; 
FILE* f = fopen("foo.mp3", "r"); 
fseek(f, -128, SEEK_END); 
fread(tmp, 1, 10, f); 

這是爲什麼?我希望能得到一個調用讀取與從大小爲10的末尾完全128字節的偏移量。

讀取的字節數似乎有所不同。

+0

與讀取更換FREAD沒什麼區別。 – 2010-12-07 14:06:04

回答