내 C++ 코드에서 perl 스크립트를 실행해야합니다. 이것은 system()으로 수행됩니다. 이 같은 내 시스템()에system()에서 인수 char argv [] 사용
int main(int argc, char * argv[])
:
지금 난 내 코드에서 두 번째 인수를 전달해야 "유형 'const를 문자의 유효하지 않은 피연산자 :
char *toCall="perl test.pl "+argv[1];
system(toCall);
는 이제 오류를 제공합니다 [14] '및'char ** 'to binary'operator + ' "
내가 뭘 잘못하고 있니? 당신은 두 개의 원시 포인터를 추가 할 수 없습니다
std::string const command = std::string("perl test.pl ") + argv[1];
system(command.c_str());
같은
코드가 완전히 안전하지 않습니다. argv [1]이';/bin/rm -rf $ HOME' –
@BasileStarynkevitch : 당신 말이 맞습니다. 그러나 OP가 입력 검사를 추가 할 계획인지는 알 수 없습니다. 여기에 그것을 보여주는 것은 더 명확한 질문을하지 않았을 것입니다. –