execに重大な問題があります。リスト(execl)とアレイ(execv)の両方のオプションを試しましたが、問題は残ります。呼び出し。不正なアドレスのためExecが失敗します
#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の他の位置には、テストプログラムの引数がいくつか含まれています。
したがって、テストは実行されません(コマンドラインから実行するとOKです)。perrorは "execの問題は悪いアドレス"というメッセージを表示します。
私もすべての引数(const char *)をキャストしようとしましたが、何も変更されませんでした。 引数に問題はありますか?それとも実行ファイルの問題ですか?
'cout << cwd << endl;' print? – immibis
私は、ファイルテストがあると予想されるパスを出力しました。 –