두 개의 매개 변수로 실행 파일을 호출하려고하는 C++ 프로그램이 있습니다. 코드는 Mac에서 잘 작동하지만 Windows에서 몇 가지 문제가 있습니다. 공백이없는 경로를 사용하면 제대로 작동하기 때문에 문제가 매개 변수의 공백과 관련 있다고 확신합니다.Windows에서 system() 사용 문제
또한 system()
에 보내는 내용을 인쇄 한 다음 해당 인쇄물을 명령 줄에서 실행하면 사소한 문제가 해결됩니다. ,
"C:\Program Files (x86)\MyProgram\some_executable.exe" "C:\Users\me\Desktop\files"
나는 따옴표가 도움이되지 않습니다 이유는 확실하지 않다 : ret = system(cmd.c_str());
그리고 내가 할 경우 :
는이 같은 전화 할 cout << cmd << endl;
나는 이런 식으로 뭔가를 얻을 수 있습니다 system()
전화로 경로 주변에 따옴표를 포함합니다. cmd의 인쇄물은 정확히 실행하려고하지만 작동하지 않습니다. 그러나 경로에 공백이 없으면 정상적으로 실행됩니다.
system()
호출에 공백이있는 매개 변수 전달에 대한 제안 사항이 있으십니까?
'system'은 무엇을 반환합니까? '-1'이라면 어떤 에러가'errno'에 의해 설정됩니까? –
-1을 반환하지 않습니다. ret가 무엇인지 알 수있는 코드 블록 바로 다음에 캐치가 있습니다. 1을 반환합니다. 그러나 some_executable.exe가 파일을 출력하기 때문에 올바르게 실행되었는지 확인할 수 있습니다. – roundtheworld
이상한. 'system()'은'1'을 반환하면 프로그램을 호출하는데 성공했다는 것을 의미하고 프로그램 자체는 종료 코드'1'로 실패합니다. –