我正在研究利用libmp3lame的音頻編碼器cgi腳本。 我正在寫C/C++的混合。運行C++ CGI腳本作爲後臺進程?
我打算有一個入口點cgi,它可以產生多個在後臺運行的編碼進程。我需要編碼過程是異步的,因爲編碼可能需要幾個小時,但我需要入口點cgi立即返回,以便瀏覽器可以繼續其業務。
我已經找到了幾個解決方案(有些完整的/一些沒有),但仍然有一些事情我想清除。
溶液1(最簡單的):該入口點的CGI是一個bash腳本,然後可以通過將輸出發送到在後臺運行一個C++過程CGI的/ dev/null的/ 2/&> 1 &(simples但不是很優雅)。解決方案2:除了入口點cgi使用C++並使用system()來運行proc/s並將輸出再次發送到/ dev/null/2/&> 1 &,與解決方案1非常相似。
[question]這很好,但我不確定共享主機公司是否允許使用system()函數。是這樣嗎?解決方案3(不完整):我研究過使用fork()/ pthread_create()來產生單獨的線程,這似乎更優雅,因爲我可以留在C領域。唯一的問題是:看起來直到所有子線程都返回後,父線程纔會退出。
[question]有沒有辦法讓父線程退出,同時允許子線程在後臺繼續。
[idea]也許我可以把child proc/s的輸出發送到黑洞!我可以簡單地將stdout重定向到/ dev/null。如果是這樣,我該怎麼做?
我希望這對某人有意義。我對C的東西仍然有些不滿,所以我可能會缺少非常基本的概念(請留下憐憫!)。
我非常感謝有關此事的任何建議。
提前許多感謝,
喬希
閱讀此鏈接: http://apidock.com/ruby/Process/detach/class – whunmr 2009-12-23 18:22:44