2013-03-04 3 views
2

내 cpp 파일에서 일부 디버그 메시지를 std :: cout 표준 출력 스트림에 인쇄하고 있습니다. 이 파일을 사용하고 Apache 서버를 사용하여 실행 파일을 실행할 때. 디버그 메시지는 어디서 인쇄됩니까? 나는 그것들이/var/lib/httpd/error_log에 인쇄 된 것을 보지 못했다. 사전에아파치 표준 출력 스트림

감사합니다.

+0

"Apache 서버를 사용하여 실행 파일 실행"을 실행하면 CGI 프로그램으로 실행 파일을 실행합니까? – kay

+1

그런 프로젝트를 위해 [Cgicc] (http://www.gnu.org/software/cgicc/) 라이브러리를 살펴볼 수 있습니다. 또한 빠른 테스트로서 C++ 코드의 메시지를 필요한 권한이있는 파일로 작성하여 실제로 실행되고 있는지 확인할 수 있습니다. –

+0

@MihaiTodor 파일로 출력 해 보았습니다. 그것은 그렇게 작동합니다. 내 Cpp 실행 파일을 Apache에서 실행되는 스크립트를 사용하고 있습니다. – PMat

답변

3

유일한 이유는 당신이 C++ 프로그램이이 CGI 스크립트

을 경우 실행 아파치 웹 서버를 사용합니다를 체크 아웃 : http://en.wikipedia.org/wiki/Common_Gateway_Interface


과정은 여기에 아파치입니다, 웹 서버는 프로그램을 실행하고 출력 (std :: cout)을 페이지 소스로 사용합니다.

페이지 원본은 html 또는 일반 텍스트 일 ​​수 있습니다. 유일한 문제는 서버가 알지 못하기 때문에 출력의 시작 부분에 약간의 힌트를 제공하는 것입니다. 헤더라고합니다.

하여 출력하면 인쇄해야 html로하는 경우 :

콘텐츠 유형 : 텍스트/html로 줄 바꿈 다음

합니다.

또는 웹 서버가 일반 텍스트로 데이터를 해석하려는 경우, 당신은 처음

컨텐츠 형 인쇄해야합니다 : 텍스트/

일반도 줄 바꿈 다음을.


예를 들어, 일을해야 C++ 프로그램은 다음과 같이 보일 것입니다 :

#include <iostream> 

int main() 
{ 
    //output header, then one newline, then another, paired with a flush. 
    std::cout << "Content-type: text/plain\n" << std::endl; 
    //now your output 
    //calculation... 
    std::cout << "Hello World" << std::endl; 
    return 0; 
} 

모든 웹 서버 매개 변수는 일부 미리 설정된 환경 변수를 조회 할 수 있습니다. 내가 링크 된 위키 백과 문서를 읽으십시오.


편집 :

나는 사과가의 Content-type: text/htmlContent-type: text/plain은 정확했다,하지만 난 이전에 그들이 새로운 라인을 요구했다. 나는 틀렸어. 그들은 두 개의 새로운 줄이 필요하다.

이 게시물을 처음 보는 사람이라면 걱정할 필요가 없다.

+0

나는 표준 출력이 프로그램을 실행할 때 perl에서 접근 할 수 있거나, 아마도 perl이나 아파치 웹 서버가 출력을/dev/null 또는 뭔가로 리다이렉트 할 수 있다고 생각한다. 질문을 편집하여 Perl을 사용하고 있다고 말하고 싶습니다. 질문에서 나는 일반적으로 C++에 문제가 있다고 생각했습니다. 여기서 문제는 실행 파일이 아니라 서버가 아닌 펄 코드입니다. –