将 boost 写入和读取到 POSIX 管道无 boost.iostream

问题描述

我有一个设置,它使用 boost 的序列化将对象存档到文件中。我想要/需要做同样的事情,但写入 POSIX 管道而不是基本文件。

一个简单的数据包:

#include <boost/archive/binary_iarchive.hpp>
#include <boost/archive/binary_oarchive.hpp>
#include <boost/serialization/base_object.hpp>
#include <boost/serialization/export.hpp>
#include "AbstractPacket.hpp"

struct SimplePacket final: public AbstractPacket{
    bool value;

    BooleanPacket() noexcept = default;

    template <typename Archive>
    void serialize(Archive& a,const unsigned int) {
        a& boost::serialization::base_object<AbstractPacket>(*this);
        a& value;
    }

    ~SimplePacket() = default;
};

编写简单的数据包:

#include "SimplePacket.hpp"
BOOST_CLASS_EXPORT_GUID(SimplePacket,"SimplePacket")
//...//
void write(Packet* packet){
    std::ofstream file;
    file.open(_client_pipe,std::fstream::out | std::fstream::binary);
    if (file.is_open()) {
        boost::archive::binary_oarchive oa(file);
        oa << packet;
        file.close();
    }
}

这会将数据包(boost 序列化存档)写入文件。但是,我需要写入 posix 管道。 我有 read 使用 boost.iostream 是否可以从其文件描述符打开文件流到 POSIX 管道。 我还没有找到明确的方法来做到这一点; 但是我想不使用boost.iostream来做到这一点,这样的事情可能吗,如果有的话我该怎么做?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)