2015-02-24 67 views
0

我正在開發一個原型Web應用程序。我正在使用一個我自己開發的玩具http服務器,它是用C語言編寫的。服務器需要從提交的html表單獲得文本數據,並且進一步處理應該將它傳遞給我用python編寫的腳本。我知道以下方法實現相同。一旦處理完成,腳本必須將數據返回給服務器。從C語言的服務器傳遞數據到Python腳本

  1. 將數據保存在一個文件中並讓python腳本訪問它。
  2. 從服務器代碼中調用系統或exec系列函數。
  3. 我聽說過在兩側都使用插座的CGI。我知道如何在我的python腳本中做同樣的事情。但我無法看到在C服務器端如何做到這一點。

通常這被抽象出來,因爲大多數人使用apache或nginx作爲理論服務。如何在服務器代碼中實現CGI?

回答

1

CGI這裏覆蓋:http://tools.ietf.org/html/rfc3875

通過「CGI通過套接字」你大概的意思的FastCGI這是一個有點不同(和涉及長期運行的進程監聽Unix套接字和回送應答)。古典CGI包括產卵一個短暫的方法,該方法然後通過環境變量接收到該請求的參數(經由setenv()從服務器設置此。

請求數據經由標準輸入(例如在Python,sys.stdin)發送到衍生的進程。輸出響應然後通過stdout被寫入(與標題和所有)

CGI是非常簡單的,這就是爲什麼它很快被大量語言採用 - 實現CGI的學習曲線是相當快速

FastCGI類似於CGI只在腳本語言laye r(即編程接口仍然有點類似);然而實際的機制卻非常不同(你需要通過Unix套接字序列化信息)。

相關問題