gpt4 book ai didi

我可以通过 byte[ ] 数据创建 FILE 实例吗? (不要写文件)

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:21:23 29 4
gpt4 key购买 nike

我可以通过 byte[ ] 数据(在内存中)创建 FILE 实例 (FILE*) 吗?不要写文件。
(C, Linux)



我需要通过 offical MiniSEED Library 解析“MiniSEED”格式的数据.



这些库支持解析写入文件的“MiniSEED”格式数据包数据。



但我需要直接解析 Byte[] 数组中的“MiniSEED”数据。不要创建真实文件。
(因为我必须通过实时 TCP 数据包连续获取“MiniSEED”数据
并且这些库仅支持通过写入文件解析数据的方式。)



所以我尝试解决Created FILE Instance by byte[] data directly的问题。



我认为这个解决方案是最好的解决方案,无需更改库,这是一种简单的方法。






最佳答案





可以在 Linux 中从内存中的数据创建一个FILE 句柄,因为 Linux C 库支持 fmemopen()来自 POSIX.1-2008 .



调用 fmemopen(buffer, size, "r") 产生一个只读的 FILE 句柄到包含 size 的内存对象buffer 中的字节数。



但是,我不明白你为什么需要这样的东西。



The official Mini-SEED library确实提供函数msr_unpack()(和msr_unpack_data())来解析Mini-SEED数据记录。



您可能正在使用的函数,ms_readmsr()ms_readtraces()(或它们的线程安全变体 ms_readmsr_r()ms_readtraces_r(),只需从文件中读取每条记录,将每条记录传递给 msr_unpack()(如果是跟踪,则传递给 mst_addmsrtogroup()mSTL_addmsr())。



换句话说,该库确实支持解析内存中的数据。你断言它只支持解析文件显然是不正确的。



描述库函数的手册页在网上似乎没有,但如果您下载 libmseed sources ,您可以使用 man -l libmseed/doc/[function].3 阅读库函数手册页。








关于我可以通过 byte[ ] 数据创建 FILE 实例吗? (不要写文件),我们在Stack Overflow上找到一个类似的问题:

https://stackoverflow.com/questions/21040042/




29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com