0
我想編寫一個在線SVN存儲庫瀏覽器。 我決定把它作爲一個Apache模塊來實現,並且圍繞着命令行客戶端(暫時)。 因爲我起步,我有以下代碼:在編寫Apache模塊時,popen(svn)失敗,終止狀態256
FILE *f;
f = popen("/usr/local/bin/svn cat http://myrepo/svn/shell.c", "r");
char buf[1025];
if (f) {
ap_rputs("open ok\n", r);
}
else {
ap_rputs("not open ok\n", r);
}
while (fgets(buf, 1024, f) != NULL) {
ap_rprintf(r,"%s<br />", buf);
}
ap_rprintf(r, "return: %d\n", pclose(f));
此命令將失敗,並終止狀態256.什麼錯誤執行此對應?我一直無法找到這個文檔。
簡單調用如「cat somefile」已成功打印出來。實際上,調用「svn info path-to-a-working-copy」是成功的。不過,我想處理可能的遠程存儲庫的靈活性。
你有什麼建議嗎?
編輯: 退出代碼應該落在0-255的範圍內。這一個顯然沒有。這告訴我什麼?
Edit2: 作爲一個測試用例,我創建了一個bash腳本來運行所需的SVN命令,然後打印它的返回值。沒有遇到預期的SVN行爲,腳本將「1」作爲SVN的退出值。這在瀏覽器端是可見的。
重定向stderr是一個好主意。當我將它打印到標準輸出時,我收到了關於驗證的警告,就像你所建議的那樣。謝謝! – 2009-12-18 15:10:17