C++ 仅在同一进程中多次打开临时文件
我有一个关于C++ 仅在同一进程中多次打开临时文件,c++,winapi,file-io,temporary-files,C++,Winapi,File Io,Temporary Files,我有一个关于文件\u属性\u临时标记文件的问题。 首先,我想做的是: 我有一个DLL,它接受一个文件名,在内部打开该文件并从中读取。我不知道这个文件在里面是如何处理的。 我要提供给该DLL的文件将由我的进程创建。它必须是一个临时文件,其数据只能保存在RAM中,不能被其他进程访问。因此,我将Win32函数CreateFile()与FILE\u属性\u TEMPORARY以及关闭时的FILE\u标志\u DELETE\u一起使用。到目前为止,这很有效 我有一个tes代码,测试文件是否可以在打开时再次
文件\u属性\u临时标记文件的问题。
首先,我想做的是:
我有一个DLL,它接受一个文件名,在内部打开该文件并从中读取。我不知道这个文件在里面是如何处理的。
我要提供给该DLL的文件将由我的进程创建。它必须是一个临时文件,其数据只能保存在RAM中,不能被其他进程访问。因此,我将Win32函数CreateFile()
与FILE\u属性\u TEMPORARY
以及关闭时的FILE\u标志\u DELETE\u一起使用。到目前为止,这很有效
我有一个tes代码,测试文件是否可以在打开时再次访问。这是:
HANDLE WINHandle = CreateFile("TempFileWIN.txt", (GENERIC_WRITE | GENERIC_READ) ,(FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE), 0, CREATE_ALWAYS, (FILE_ATTRIBUTE_TEMPORARY | FILE_FLAG_DELETE_ON_CLOSE), 0);
ifstream ifs("TempFileWIN.txt", (ios::in | ios::trunc));
if(ifs.is_open())
{
cout << "Success!" << endl;
}
else if(ifs.fail())
{
cout << "Failed!" << endl;
}
HANDLE WINHandle=CreateFile(“TempFileWIN.txt”,(通用写通用读),(文件共享读文件共享写文件共享删除),0,创建总是,(文件属性临时文件标志删除打开关闭),0);
ifstream-ifs(“TempFileWIN.txt”,(ios::in | ios::trunc));
if(if.is_open())
{
cout如果我是你,我会保留打开文件的句柄,并将其传递给DLL代码,而不使用文件名,因为如果你试图使用“正常”文件访问权限访问临时的、关闭时删除的文件,可能会在某个时候遇到访问限制
可以在fstream对象中使用Windows句柄,如以下回答中所述: