我有一個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]包含了可執行文件的名稱的字符串,讓我們說 「測試」。我編譯 - > G ++ TEST.CPP -o測試 - >所以我得到這個可執行文件。 aparams的其他位置包含測試程序的一些參數。
所以,測試永遠不會運行(當我從命令行運行它沒關係),perror顯示消息「exec中的問題是:壞地址。」
我也試圖強制轉換所有參數(const char *),但沒有任何改變。 這是一個參數問題嗎?或者這是可執行文件的問題?
'cout << cwd << endl;'print? – immibis
它打印了我有文件測試的預期路徑。 –