2013-03-04 134 views
2

在我的cpp文件中,我將一些調試消息打印到std :: cout標準輸出流。當我使用此文件並使用Apache服務器運行可執行文件時。調試消息的打印位置在哪裏?我沒有看到它們打印在/ var/lib/httpd/error_log中。Apache標準輸出流

在此先感謝。

+0

「使用Apache服務器運行可執行文件」,您將可執行文件作爲CGI程序運行? – kay 2013-03-04 22:31:40

+1

您可能想看看這個項目的[Cgicc](http://www.gnu.org/software/cgicc/)庫。另外,作爲一個快速測試,您可以嘗試將C++代碼中的消息寫入文件(它具有所需的權限),只是爲了查看它是否正在執行。 – 2013-03-04 23:23:22

+0

@MihaiTodor我試圖輸出到一個文件。它以這種方式工作。我正在使用我的Cpp可執行文件形式在Apache中運行的腳本。 – PMat 2013-03-05 15:46:23

回答

3

唯一的原因,你應該使用Apache Web服務器運行一個C++程序,如果你做一個CGI腳本

檢查出來:http://en.wikipedia.org/wiki/Common_Gateway_Interface


這裏的過程是Apache的, Web服務器,運行你的程序並使用輸出(std :: cout)作爲頁面源。

頁面源可以是html或純文本。唯一的問題是服務器不知道,所以你在輸出開始時提供一點提示。它被稱爲標題。

如果你的輸出HTML的,你必須打印:

內容類型:text/html的

其次換行。

,或者如果您希望Web服務器來解釋數據爲純文本,您必須首先打印

內容類型:text/plain的

也跟着換行。


例如,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; 
} 

任何Web服務器參數可以用一些預先設置環境變量進行查詢。閱讀我鏈接的維基百科文章。


編輯:

我道歉時,Content-type: text/htmlContent-type: text/plain是正確的,但我此前曾表示,他們需要一個新的生產線。我錯了,他們需要兩條新線

如果這是您第一次看到這篇文章,比不擔心它。

+0

我猜想標準輸出可以在運行程序時從perl訪問,或者很可能是perl或者apache web服務器將輸出重定向到/ dev/null或其他東西。我會說編輯這個問題,說明你正在使用Perl,從你的問題,我認爲你一般在C++中遇到麻煩。這裏的問題是你的perl代碼,而不是服務器,而不是可執行文件。 – 2013-03-05 21:08:58