exec에 심각한 문제가 있습니다. 목록 (execl)과 배열 (execv)의 두 옵션을 모두 사용해 보았지만 문제가 남아 있습니다. 내가 만들려고하는 기능을 제공 할 것입니다. 호출.잘못된 주소로 인해 실행이 실패 함
#include <unistd.h>
#include <sys/types.h>
void MyFunc(string aparams[],char* infile,char* outfile,int k,int points){
int mcount=3;
char* offset= new char[5];
sprintf(offset,"%d",k);
char* pntr=new char[5];
sprintf(pntr,"%d",points);
char* *wparams=new char*[mcount];
for (int i = 0; i < mcount; i++) {
wparams[i] = new char[aparams[i].length() + 1];
strcpy(wparams[i], aparams[i].c_str());
}
char *cwd;
cwd=(char*)malloc(255);
getcwd(cwd,255);
strcat(cwd,"/");
strcat(cwd,wparams[0]);
cout << cwd << endl;
execl(cwd,wparams[0],"-i",infile,"-o",outfile,"-f",offset,"-n",pntr,"-a",wparams[1],wparams[2],wparams[3],(char*) NULL);
cout << "exec failed" << endl;
perror("The problem in exec is:");
exit(3);
}
aparams [0] 실행 파일의 이름을 가진 문자열을 포함,의는 "테스트"라고하자 .I 컴파일 -> g ++ Test.cpp에 -o 테스트 -> 그래서 내가 가진이 실행 파일. aparams의 다른 위치에는 테스트 프로그램에 대한 일부 인수가 들어 있습니다.
따라서 테스트를 실행하지 마십시오 (명령 줄에서 실행하면 문제가 없습니다). perror는 "문제는 exec입니다 : 잘못된 주소입니다."
나는 모든 인수 (const char *)를 캐스팅하려고했지만 아무 것도 변경되지 않았습니다. 인수에 문제가 있습니까? 또는 실행 파일의 문제입니까?
'cout << cwd << endl;'print? – immibis
파일 테스트가있는 예상 경로가 인쇄되었습니다. –