2017-10-15 187 views
0

我正在创建一个Perl脚本,在端口3000上创建一个Net::WebSocket::Server。现在我有(不太聪明)的想法,通过CGI在浏览器中启动脚本,所以它在后台运行并且不能停止。但是,我必须在修改脚本时重新启动脚本。终止运行Perl脚本开始CGI

除了重新启动计算机之外,是否可以在无限循环中停止CGI脚本?

+2

我不明白为什么你认为它是从CGI脚本开始很重要。以这种方式停止程序(发送信号?) – ikegami

+0

您想通过外部进程来停止它吗?例如,您希望有一个应用程序监视脚本的时间戳,以及何时更改您希望它停止脚本执行并再次运行它? –

回答

1

你没有说你在哪个操作系统上,所以我们不能给你关于如何查找和终止进程的具体建议。但是您可以随时重新启动Web服务器应用程序。 CGI脚本是启动它们的服务器进程的子进程(可能是Apache)。如果您只需重新启动Apache服务器,则应全部终止。

请不要把应该在你的cgi-bin目录中持久运行的代码。正如你发现的那样,这是一个坏主意。

+0

一切都指向从CGI脚本启动的程序,因此apache进程不是您声明的父进程,而是“init”(在其之前的父进程中,CGI脚本存在之后)。重新启动Apache将无济于事。 – ikegami

+0

@ikegami我快速浏览了[Net :: WebSocket :: Server的源代码](https://metacpan.org/source/TOPAZ/Net-WebSocket-Server-0.003004/lib/Net/WebSocket/Server。 pm),我认为实际上apache启动的CGI脚本一直在无限循环中运行。你认为这是从该脚本启动的程序的结论是什么? – simbabque

+0

CGI脚本不能永远运行,并且OP说它在后台运行。 – ikegami