我希望为Qt应用程序(可以使用任何c ++方法或库)实现一种方法来访问/查找由Matlab进程创建的映射内存文件。我已经阅读了几个examples如何在特定环境中执行共享内存(即在Matlab或Qt或VS中创建的2个进程),但没有人谈论如何从另一个程序中查找映射文件。有没有办法做到这一点?
这是我的Matlab脚本,用于映射文件:
filename = fullfile(tempdir, 'test.dat');
[f,~]=fopen(filename,'wb');
fwrite(f,67,'uint8');
fclose(f);
m = memmapfile(filename,'Writable',true,'Format','uint8');
keyboard
我真的不想从Qt写入映射文件,现在我只想知道它是否存在,然后可能在将来写入它。在Qt中我唯一能想到的就是查看文件是否存在,但我的尝试基本上是有缺陷的,因为据我所知,我想知道文件是否被映射(寻找内存地址?)而不是它是否存在在硬盘上。
#include <QCoreApplication>
#include <QSharedMemory>
#include <QFile>
#include <QTextStream>
#include <QString>
void read(QString filename)
{
QFile file(filename);
if (!file.exists()) {
QTextStream(stdout) << "File does not exist!" << endl;
}
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString filename = "C:/Users/Engineer/AppData/Local/Temp/test.dat";
read(filename);
return a.exec();
}
有没有人试图这样做?有人能指出我正确的方向吗?