【问题标题】:How to open an ifstream from a file descriptor? [duplicate]如何从文件描述符打开 ifstream? [复制]
【发布时间】:2017-04-14 01:15:16
【问题描述】:

我正在尝试使用 rc4 通过 s3fs 对文件进行加密。基本上我需要使用 s3fs 提供的文件描述符来提取文件名,然后执行此操作。那么我将如何在 C++ 中做到这一点?

我没有任何代码要显示,因为我不知道如何开始它看起来像:

void foo(int fd){
// something

string temp; 
temp = // result of that somethingthing;
ifstream in;
in.open(temp,ios::binary | ios::in);
}

这甚至可行吗?还是我注定要使用系统调用?

【问题讨论】:

  • 使用 C 函数读取字符缓冲区,然后将该字符缓冲区转换为 std::string,然后再转换为 std::stringstream,也许?
  • @EhabEl-Nabarawy 那里列出的方法不适用于我的系统。我正在尝试jerry-rig 使用 tadman 的建议的解决方案,这似乎可行。还不能 100% 确定。
  • @Caleb 哦,哎呀,基于 FUSE,我很抱歉!
  • 没问题感谢您的帮助。我想我已经成功地通过系统调用实现了我的目标,但我仍然有一些错误。如果无法调试,我可能会在几天后再次发布

标签: c++ file s3fs


【解决方案1】:

简答:你不能,反正在标准 C++ 中也不行。没有官方/便携的方式来做到这一点。

不过,您可以在这些之前的帖子中找到一些“变通”解决方案:

How to construct a c++ fstream from a POSIX file descriptor?

Getting a FILE* from a std::fstream

Retrieving file descriptor from a std::fstream

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-31
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多