首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有可能从文件*中拯救文件描述符?

是否有可能从文件*中拯救文件描述符?
EN

Stack Overflow用户
提问于 2014-04-11 09:38:00
回答 4查看 239关注 0票数 1

我必须使用一个跨平台库来传递FILE*对象。

我从另一个源获得一个文件描述符(继承的),我希望在fd进程之间保持相同的

目前,我使用fdopen将文件描述符转换为FILE*对象。

我的问题是,用于清理fclose对象的FILE*关闭了连接的文件描述符。

我非常想在这个文件描述符被使用之后保留它。

有没有办法从FILE*拯救文件描述符?

有什么办法把它拆开吗?

还是用虚拟文件替换FILE*中的文件描述符的方法?

这需要跨平台,不管怎么说,整个POSIX都很好。

EN

回答 4

Stack Overflow用户

发布于 2014-04-11 09:40:15

我的问题是,用于清理fclose对象的FILE*关闭了连接的文件描述符。

您可以使用dup(2)获取描述符的副本。那么fclose(3)所做的fclose(3)就不会做任何事情了。

我需要保持完全相同的fd号码

然后在fclosedup2(savedfd, rescuedfd)之后再次调用dup2(savedfd, rescuedfd)

票数 2
EN

Stack Overflow用户

发布于 2014-04-11 09:55:18

假设fd是您的文件描述符,f是您的文件*从中获得。也许像下面这样的东西能起作用:

代码语言:javascript
复制
fd2 = dup(fd);
fclose(f);
dup2(fd2, fd);
close(fd2);
票数 2
EN

Stack Overflow用户

发布于 2014-04-11 09:49:32

当您从另一个源获得文件描述符时,尝试从该文件描述符获取其文件名。(有些人说它可能使用特定于平台的方法。( -google .)

一旦您获得文件名,然后再次打开它并获取文件*并完成您的工作,并使用fclose清理它。

你原来的fd不会被打扰。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23008895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档