실행할 수 없습니다 :내가 다음과 같이 exevp 사용하여 명령을 실행하려고했습니다 execv와
char *args[11];
args[0] = (char*)lgulppath.c_str();
args[1] = (char*)"-i";
args[2] = (char*)sniffer_interface.c_str();
args[3] = (char*)"-r";
args[4] = (char*)pcapfileLimit.c_str();
args[5] = (char*)"-C";
args[6] = (char*)"1";
args[7] = (char*)"-f";
args[8] = (char*)serverip_filter.c_str();
args[9] = (char*)"-o";
args[10] = (char*)lpipepath.c_str();
execv("/usr/sbin/program",args);
이 작동합니다. 내가 매개 변수로 첫 번째 매개 변수 "는/usr/sbin에/프로그램"을 갖고 싶어 때, 말 :
string str = "/usr/sbin/program";
//char* args is assigned as above
execv(str.c_str(),args);
이 실패하고 -1을 반환합니다. 나는 왜 그럴 수 없어요.
모두 감사합니다.
errno 란 무엇입니까? – Jasper
우선,'execv'에 넘겨주는 인자 배열은'NULL'을 가리키는 엔트리로 끝나야합니다. 둘째, 오류가 발생하면 그 이유에 대해 ['errno'] (http://en.cppreference.com/w/cpp/error/errno)를 검사 할 수 있습니다 (['strerror'] (http : // en .cppreference.com/w/cpp/string/byte/strerror) 또는 ['perror'] (http://en.cppreference.com/w/cpp/io/c/perror) . –
args 배열의 끝에 NULL을 넣지 못하는 것처럼 보입니다. 그게 모든 종류의 문제를 일으킬 수 있습니다 - 여기에 당신의 특별한 문제 일 수도 있고 아닐 수도 있지만 우선 그 문제를 해결하십시오. –