argI有一些代码:
CreateProcess(L"D:\\prog\\forLb1SPZ.exe",L"D:\\prog\\forLb1SPZ.exe D:\\1.txt",NULL,NULL,FALSE,0,NULL,NULL,&si,&pi)
这些代码正在运行,但是...文件正在程序附近创建(此代码被写入)并且名称为“D” - argv [1]的第一个符号。怎么了?
forLb1SPZ.exe中的代码
#include "stdafx.h"
#include "iostream"
#include <stdio.h>
#include <math.h>
using namespace std;
int _tmain(int argc, char* argv[])
{
int value;
FILE *Ptr;
Ptr=fopen("argv[1]","w");
for(int i=0;i<20000;i++){
value=rand();
fprintf(Ptr,"%d i=%d \n",value,i);
}
fclose(Ptr);
return 0;
}
lab2SPZ.exe(主程序)中的代码
#include "stdafx.h"
#include "iostream"
#include <windows.h>
#include <stdio.h>
using namespace std;
int main()
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
if(!CreateProcess(L"D:\\forLb1SPZ.exe","D:\\forLb1SPZ.exe D:\\1.txt",NULL,NULL,FALSE,0,NULL,NULL,&si,&pi))
{printf( "creating fail\n");system("pause");return 0;}
printf("handle: %X\n", pi.hProcess);
WaitForSingleObject( pi.hProcess, INFINITE );
system("pause");
return 0;
}
答案 0 :(得分:2)
你确定是CreateProcess
创建该文件,而不是创建LB1SPZ.exe吗?
注意:
CreateProcessA
并查看是否存在差异。CreateProcess
更改字符串。如果发生这种情况,您将有未定义的行为,并可能发生崩溃。