为什么 fileno 无法返回有效的描述符?
我正在使用 funopen 打开一个流
FILE *fin = funopen(cookie, readfn, NULL, NULL, closefn);
if (fin == NULL)
{
handle_error();
return -1;
}
int fdin = fileno(fin);
对 funopen 的调用成功,但 fileno(fin)
返回 -1
。
如何获取文件描述符?谢谢。
I'm opening a stream with funopen
FILE *fin = funopen(cookie, readfn, NULL, NULL, closefn);
if (fin == NULL)
{
handle_error();
return -1;
}
int fdin = fileno(fin);
The call to funopen succeeds but fileno(fin)
returns -1
.
How can I get the file descriptor? Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
用
funopen
打开的FILE
(顺便说一句,它不属于任何标准;AFAIK 它是一个 BSD 扩展)没有底层文件描述符。它有 cookie。我不知道你想要文件描述符做什么,但你可能不走运。A
FILE
opened withfunopen
(which is not part of any standard, by the way; AFAIK it's a BSD extension) does not have an underlying file descriptor. It has the cookie instead. I don't know what you wanted the file descriptor for, but you're probably out of luck.没有文件连接到 funopen,因此没有 fd。如果您需要的话,请尝试使用
tmpfile
。There's no file connected to funopen, and thus no fd. Try
tmpfile
instead if you need that.