请问Windows下用for循环创建新进程为什么只有第一个成功创建了呢QAQ
是操作系统的实验,实验要求如下:
在 Windows 环境下, 利用高级语言编程环境( 限定为 VS 环境或VC 环境) 调用相关的系统调用(CreateProccess,即系统 API)实现一个包括 “进程创建,文件读写”的应用程序。
有一个文本文件 CommandList.txt, 第一行是说明性文字:本文件最后一次打开和运行日期是20190407。第二行开始每行是一个可执行程序的名称(含路径)。 编写一个应用程序能打开该文件,并顺序执行其中的每个程序,并更新文件第一行中的日期。
我把文件打开和日期修改放在主进程中,只有打开txt里的应用程序想用CreateProcess()实现
// 创建子进程
for(int i=0; i<path.size(); ++i){
STARTUPINFO si = {sizeof(si)};
PROCESS_INFORMATION pi;
// path是vector<string>向量,保存每行路径,p作为创建进程的lpCommandLine
char p[path[i].size()];
cout<<"new path "<<i<<": ";
for(int j=0; j<path[i].size(); ++j){
p[j] = path[i][j];
cout<<p[j];
}
cout<<endl;
//每个路径都创建一个新进程打开
bool ret = CreateProcess(NULL, p, NULL, NULL, false, 0, NULL, NULL, &si, &pi);
if(ret) {
cout<<"子进程id: "<<pi.dwProcessId<<endl;
}
else {
cout<<"子进程创建失败!失败原因:"<<GetLastError()<<endl;
}
}
运行结果:
这样运行以后只有第一个循环能成功创建,接下来的都创建失败,GetLastError()=2,我查了是文件不存在,但是我的路径都是正确的,现在就是不知道哪里错了orz
有没有人帮忙看看,万分感谢!