我在使用 fseek 时遇到问题。我有一个包含获取的 HTTP 数据的文件指针。然后我让 libmagic 确定文件的 mime 类型,然后想倒带:
char *mime_type (int fd)
{
char *mime;
magic_t magic;
magic = magic_open(MAGIC_MIME_TYPE);
magic_load(magic, MAGIC_FILE_NAME);
mime = (char*)magic_descriptor(magic, fd);
magic_close(magic);
return (mime);
}
int fetch_pull() {
fetch_state = fopen("/tmp/curl_0", "r");
if (fetch_state == NULL) {
perror("fetch_pull(): Could not open file handle");
return (1);
}
fd = fileno(fetch_state);
mime = mime_type(fd);
if (fseek(fetch_state, 0L, SEEK_SET) != 0) {
perror("fetch_pull(): Could not rewind file handle");
return (1);
}
if (mime != NULL && strstr(mime, "text/") != NULL) {
/* do things */
} else if (mime != NULL && strstr(mime, "image/") != NULL) {
/* do other things */
}
return (0);
}
这会抛出“fetch_pull():无法倒带文件句柄:错误的文件描述符”。怎么了?