![]() |
是否可以拦截matlab save()字节流
在matlab中,可以使用matlab save()调用将matlab对象甚至整个工作区写入文件。我想截取字节流并在将其转到文件之前对其进行后处理,这可能吗?或者,可以指定写入字节流的文件描述符,而不是通常作为参数进入save()调用的文件名。
请注意,我不是在寻找在matlab中写入文件的替代方法,我知道我可以fopen()文件并写入所需的内容,但是重点是我想(重新)使用对象序列化在内部保存调用,而不是再发明我自己的。 对于load()调用,当然会出现一个模拟问题,但在那种情况下,在字节流进入反序列化过程之前就对其进行了拦截,但我想是否有可能为save()方法使用,以解决load()问题。自然。 一些澄清: [LIST=1][*]我不是在寻找一种序列化matlab数据的新方法,它已经存在,整个练习的重点是在save()调用中使用现有的序列化,因此1)我不需要开始更新序列化较新版本的matlab中用于新类型对象的代码,或者天堂禁止人们开始使用自定义OOP对象,并且2)我仍然可以轻松地使用现有代码来读取mat文件,例如scipy对mat文件的支持。 [*]流在进行后处理之前一定不能泄漏到文件或其他任何东西上,这是出于安全性的考虑,将流简单地写到文件中完全破坏了该目的。 [/LIST]并发症: [LIST][*]看来在matlab的save函数中使用的功能不只是常规的顺序写入。检查库的对象代码似乎保存功能是使用实施matPutVariable (以前称为matPutArray ),该类型的给定变量写入mxArray*出到文件的类型MATFile*打开与matOpen 。这里的问题是matPutVariable描述中的以下文本: [INDENT]如果MAT文件中不存在mxArray ,则函数会将其追加到末尾。如果文件中存在具有相同名称的mxArray ,则该函数通过重写文件将现有的mxArray替换为新的mxArray 。 [/INDENT]这意味着matPutVariable函数将必须在文件中进行查找,显然在使用管道时将无法进行查找,因此,在使用此现有的序列化功能时,无法使用管道来实现我们对字节流的处理。 [/LIST] [B]回答:[/B] 在思考了几个月之后,我要说,不,这是不可能的。至少,并非没有不可移植的二进制/ ELF黑客攻击。 [url=https://stackoverflow.com/questions/4807035]更多&回答...[/url] |
所有时间均为北京时间。现在的时间是 23:22。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.