openlang

如何停止 inets 服务器?

你好,

我有个关于 inets 的基础问题(顺便说一下,它不需要额外依赖,用着很方便),已经启动的 inets“服务”该怎么关闭(比如在 28.4 版本中)?

下面这些尝试都没成功。


Eshell V16.3 (press Ctrl+G to abort, type help(). for help)

(demo@nodebox)1> inets:start().
ok
(demo@nodebox)2> {ok,ServerPid} = inets:start( httpd,[{profile,cedar}, {port,8080}, {server_name,"maple"}, {server_root,"."}, {document_root,"."}, {bind_address,"127.0.0.1"}]).
{ok,<0.115.0>}
(demo@nodebox)3> inets:stop( httpd, ServerPid).
{error,not_found}
(demo@nodebox)4> inets:stop( httpd, cedar).
** exception error: no function clause matching httpd:stop_service(cedar) (httpd.erl:1278)
	 in function  inets:call_service/3 (inets.erl:558)
(demo@nodebox)5> inets:stop( httpd, "maple").
** exception error: no function clause matching httpd:stop_service("maple") (httpd.erl:1278)
	 in function  inets:call_service/3 (inets.erl:558)
(demo@nodebox)7> inets:services().
[{httpc,<0.111.0>},{httpd,<0.115.0>}]
(demo@nodebox)8> ServerPid.
<0.115.0>
(demo@nodebox)9> inets:services_info().
[{httpc,<0.111.0>,[{profile,default}]},
 {httpd,<0.115.0>,
		[{bind_address,{127,0,0,1}},
		 {host,"nodebox"},
		 {port,8080},
		 {server_name,"maple"}]}]

上面的 httpd 条目是不是因为什么原因少了 {profile,cedar}?

希望能得到一些提示,谢谢!

Tavin.

从英语翻译查看原文

后续讨论 2

顺着彼此的依据读下去
  1. 固定链接

    你好,

    停止带有配置名称的 httpd 服务,可以调用 inets:stop(httpd, {BindAddress, Port, Profile})

    如果启动时没有指定配置,可以用 inets:stop(httpd, {BindAddress, Port}) 或 inets:stop(httpd, ServerPid)

    我也觉得 inets:services_info() 应该显示配置名称,不过还得查一下这里为什么没有。

    祝好,

    Mervin

    从英语翻译查看原文
  2. 固定链接

    非常感谢 Mervin,inets:stop(httpd, {{127,0,0,1}, 8080, cedar}) 正好解决了问题!

    也许 inets 的文档 inets v9.6.2 (https://www.erlang.org/doc/apps/inets/inets.html#stop/2) 可以更清楚地解释 “Reference :: pid (https://www.erlang.org/doc/apps/erts/erlang.html#t:pid/0)() | term (https://www.erlang.org/doc/apps/erts/erlang.html#t:term/0)()” 类型,并强调服务器的大部分相关信息其实在 httpd 的文档 inets v9.6.2 (https://www.erlang.org/doc/apps/inets/httpd.html) 中(客户端也类似,在 httpc 的文档 inets v9.6.2 (https://www.erlang.org/doc/apps/inets/httpc.html) 中)。

    再次感谢!

    从英语翻译查看原文

同一个问题的其他角度

  1. 在 Raspberry Pi 4 上打开文件

    我在 Raspberry Pi 4 上用 for 循环里的 fopen 读取某个目录中的文件,总共有 1200 多个。循环执行到一定次数后,fopen 就无法再读取下一个文件了。应该怎么解决这个问题?

    回复 2最近活动 c
  2. Go 会保留 SIGUSR1 和 SIGUSR2 吗?

    各位开发者, 我们想在 dmtcp 下运行一个 go 应用(GitHub 上的 dmtcp/dmtcp 是分布式多线程检查点项目 DMTCP(https://github.com/dmtcp/dmtcp))。这个检查点工具使用 SIGUSR2(也可以…

    回复 2最近活动 go