我正在創建一個Perl腳本,在端口3000上創建一個Net::WebSocket::Server
。現在我有(不太聰明)的想法,通過CGI在瀏覽器中啓動腳本,所以它在後臺運行並且不能停止。但是,我必須在修改腳本時重新啓動腳本。終止運行Perl腳本開始CGI
除了重新啓動計算機之外,是否可以在無限循環中停止CGI腳本?
我正在創建一個Perl腳本,在端口3000上創建一個Net::WebSocket::Server
。現在我有(不太聰明)的想法,通過CGI在瀏覽器中啓動腳本,所以它在後臺運行並且不能停止。但是,我必須在修改腳本時重新啓動腳本。終止運行Perl腳本開始CGI
除了重新啓動計算機之外,是否可以在無限循環中停止CGI腳本?
你沒有說你在哪個操作系統上,所以我們不能給你關於如何查找和終止進程的具體建議。但是您可以隨時重新啓動Web服務器應用程序。 CGI腳本是啓動它們的服務器進程的子進程(可能是Apache)。如果您只需重新啓動Apache服務器,則應全部終止。
請不要把應該在你的cgi-bin目錄中持久運行的代碼。正如你發現的那樣,這是一個壞主意。
一切都指向從CGI腳本啓動的程序,因此apache進程不是您聲明的父進程,而是「init」(在其之前的父進程中,CGI腳本存在之後)。重新啓動Apache將無濟於事。 – ikegami
@ikegami我快速瀏覽了[Net :: WebSocket :: Server的源代碼](https://metacpan.org/source/TOPAZ/Net-WebSocket-Server-0.003004/lib/Net/WebSocket/Server。 pm),我認爲實際上apache啓動的CGI腳本一直在無限循環中運行。你認爲這是從該腳本啓動的程序的結論是什麼? – simbabque
CGI腳本不能永遠運行,並且OP說它在後臺運行。 – ikegami
我不明白爲什麼你認爲它是從CGI腳本開始很重要。以這種方式停止程序(發送信號?) – ikegami
您想通過外部進程來停止它嗎?例如,您希望有一個應用程序監視腳本的時間戳,以及何時更改您希望它停止腳本執行並再次運行它? –