2011-03-11 2 views
0

Windows 및 Linux에서 실행되는 C++ CGI 프로그램을 개발합니다.다른 프로그램을 호출하는 C++ 앱이 실패합니다.

system("otherProgram.exe arguments"); 

나는 또한 시도 :

이 프로그램은이 같은 다른 프로그램 호출

spawnl(_P_WAIT, "otherProgram.exe", "argument1", NULL); 

이 내 디버거에서 내 가상 머신에서 잘 작동을하지만, 내 테스트 서버에 '는 아무튼 일하지 마라. 시스템 호출은 -1을 리턴합니다.

왜 그런가?

+1

무엇이'errno'의 값입니까? (가능한 값은 [here] (http://www.barricane.com/c-error-codes-include-errno)를보십시오) – Vlad

+0

감사합니다. errno가 13을 반환 : permission denied. 나는 이유를 모르지만 그것은 최소한 힌트입니다. –

+0

서버에서 해당 프로그램의 읽기/실행/기타 권한을 확인할 수 있습니까? 귀하의 CGI 프로그램은 어떤 계정에서 실행됩니까? 도움이 될 수 있습니다. – Vlad

답변

2

이것은 사용 권한 문제 일 수 있습니다. 기본적으로 CGI 응용 프로그램은 사용자 nobody에 의해 실행됩니다. 실행하려는 프로그램은 "nobody"에 의해 실행 가능해야합니다.

+0

모든 사람에게 모든 권한을 부여하는지 알면 내 관리자에게 물어 보겠습니다. –

+0

사용자'Everyone'에 대해'cmd.exe' 권한을 부여해야만했습니다. –

1

테스트 상자의 PATH 환경 변수에있는 디렉터리 중 하나에 "otherProgram.exe"가 들어있는 디렉터리가 있습니까? 즉, 운영 체제가 해당 프로그램을 찾는 방법을 알고 있습니까?

+0

프로그램이 먼저 존재하는지 확인하고 실행하지만 실행할 수 없습니다. 나뿐만 아니라 콘솔 명령을 시도하고 그들은 작동하지 않습니다. like "md testFolder" –

+0

또한 파일 사용 권한이 필요없는 셸 명령을 실행하거나 환경 문제를 배제하기 위해 특정 경로에 의존하는 것이 좋습니다. "echo 'Hello World'"또는 예를 들어 보겠습니다. 이것이 실패하면 웹 서버가 system() 호출을 실행할 수있는 권한을 부여하지 않을 수 있습니다. –

+0

echo hello가 작동하지 않습니다. 그가 왜 내 응용 프로그램이 들어있는 폴더에 –

관련 문제