为什么 fileno 无法返回有效的描述符?

发布于 2024-11-30 11:02:12 字数 283 浏览 0 评论 0原文

我正在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

阿楠 2024-12-07 11:02:12

funopen 打开的 FILE (顺便说一句,它不属于任何标准;AFAIK 它是一个 BSD 扩展)没有底层文件描述符。它有 cookie。我不知道你想要文件描述符做什么,但你可能不走运。

A FILE opened with funopen (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.

软的没边 2024-12-07 11:02:12

没有文件连接到 funopen,因此没有 fd。如果您需要的话,请尝试使用 tmpfile

There's no file connected to funopen, and thus no fd. Try tmpfile instead if you need that.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文