Почему fileno не может вернуть действительный дескриптор? - PullRequest
1 голос
/ 21 августа 2011

Я открываю поток с помощью funopen

FILE *fin = funopen(cookie, readfn, NULL, NULL, closefn);
if (fin == NULL)
{
    handle_error();
    return -1;
}
int fdin = fileno(fin);

Вызов funopen завершается успешно, но fileno(fin) возвращает -1.

Как я могу получить дескриптор файла?Спасибо.

Ответы [ 2 ]

2 голосов
/ 21 августа 2011

A FILE, открытый с помощью funopen (который, кстати, не является частью какого-либо стандарта; AFAIK это расширение BSD) не имеет базового файлового дескриптора. У него есть печенье вместо . Я не знаю, для чего вам нужен дескриптор файла, но вам, вероятно, не повезло.

0 голосов
/ 21 августа 2011

Нет файла, связанного с funopen, и, следовательно, нет fd.Попробуйте tmpfile вместо этого, если вам это нужно.

...