X
xiaochengyong
Unregistered / Unconfirmed
GUEST, unregistred user!
程序关闭时的文件操作问题
一个程序Program1.exe,
1.运行时使用ADOTable->TableName="datafile.dbf";ADOTable->Active=true打开数据库文件datafile.dbf;
2.在退出程序前,执行ADOTable->Active=false(关闭datafile.dbf,用filemon可以看出,此时该文件是不会被关闭的,只有到Program1.exe结束时才会关闭);
3.在退出程序时,创建一个立即执行的进程Process1如下所示:
(Program1.exe的WinMain)
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
...
}
...
STARTUPINFO si={sizeof(si)};
PROCESS_INFORMATION pi;
bool fSuccess=false;
AnsiString ProcessNameStr="Process1";
fSuccess=CreateProcess(NULL,
ProcessNameStr.c_str(),
NULL,NULL,
false,
0,
NULL,NULL,
&si,
&pi);
if(fSuccess)
{
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
}
return 0;
}
4.进程Process1执行时,先延时几秒Sleep(3000);在执行FileOpen("datafile.dbf",fmOpenRead)却会返回-1即不成功,这是为什么?盼望高手之点,谢谢!
一个程序Program1.exe,
1.运行时使用ADOTable->TableName="datafile.dbf";ADOTable->Active=true打开数据库文件datafile.dbf;
2.在退出程序前,执行ADOTable->Active=false(关闭datafile.dbf,用filemon可以看出,此时该文件是不会被关闭的,只有到Program1.exe结束时才会关闭);
3.在退出程序时,创建一个立即执行的进程Process1如下所示:
(Program1.exe的WinMain)
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
...
}
...
STARTUPINFO si={sizeof(si)};
PROCESS_INFORMATION pi;
bool fSuccess=false;
AnsiString ProcessNameStr="Process1";
fSuccess=CreateProcess(NULL,
ProcessNameStr.c_str(),
NULL,NULL,
false,
0,
NULL,NULL,
&si,
&pi);
if(fSuccess)
{
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
}
return 0;
}
4.进程Process1执行时,先延时几秒Sleep(3000);在执行FileOpen("datafile.dbf",fmOpenRead)却会返回-1即不成功,这是为什么?盼望高手之点,谢谢!