2013-02-19 2 views
3

두 개의 매개 변수로 실행 파일을 호출하려고하는 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() 호출에 공백이있는 매개 변수 전달에 대한 제안 사항이 있으십니까?

+0

'system'은 무엇을 반환합니까? '-1'이라면 어떤 에러가'errno'에 의해 설정됩니까? –

+0

-1을 반환하지 않습니다. ret가 무엇인지 알 수있는 코드 블록 바로 다음에 캐치가 있습니다. 1을 반환합니다. 그러나 some_executable.exe가 파일을 출력하기 때문에 올바르게 실행되었는지 확인할 수 있습니다. – roundtheworld

+2

이상한. 'system()'은'1'을 반환하면 프로그램을 호출하는데 성공했다는 것을 의미하고 프로그램 자체는 종료 코드'1'로 실패합니다. –

답변