Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Erlang R19中的gen_服务器实现_Erlang - Fatal编程技术网

Erlang R19中的gen_服务器实现

Erlang R19中的gen_服务器实现,erlang,Erlang,我正在从复制gen_服务器实现代码,并创建一个名为kitty_gen_服务器.erl的文件。然后在erlang shell中运行以下命令: $ erl Erlang/OTP 19 [erts-8.0.2] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false] [dtrace] Eshell V8.0.2 (abort with ^G) 1> c(kitty_gen_server). {ok,k

我正在从复制gen_服务器实现代码,并创建一个名为
kitty_gen_服务器.erl
的文件。然后在erlang shell中运行以下命令:

$ erl
Erlang/OTP 19 [erts-8.0.2] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]

Eshell V8.0.2  (abort with ^G)
1> c(kitty_gen_server).
{ok,kitty_gen_server}
2> P = kitty_gen_server:start_link().
{ok,<0.64.0>}
3> kitty_gen_server:close_shop(P).
** exception exit: {{function_clause,
                        [{gen,do_for_proc,
                             [{ok,<0.64.0>},#Fun<gen.0.62797829>],
                             [{file,"gen.erl"},{line,253}]},
                         {gen_server,call,2,[{file,"gen_server.erl"},{line,200}]},
                         {erl_eval,do_apply,6,[{file,"erl_eval.erl"},{line,674}]},
                         {shell,exprs,7,[{file,"shell.erl"},{line,686}]},
                         {shell,eval_exprs,7,[{file,"shell.erl"},{line,641}]},
                         {shell,eval_loop,3,[{file,"shell.erl"},{line,626}]}]},
                    {gen_server,call,[{ok,<0.64.0>},terminate]}}
     in function  gen_server:call/2 (gen_server.erl, line 204)
4>

kitty\u gen\u server:start\u link/0
在成功时返回一个元组
{ok,Pid}
,您将其直接存储在
p
中,因此您的下一个调用将
{ok,Pid}
传递到
kitty\u gen\u server:close\u shop/1
。您需要使用模式匹配将Pid仅存储在
P
中:

1> c(kitty_gen_server).
{ok,kitty_gen_server}
2> {ok, P} = kitty_gen_server:start_link().
{ok,<0.64.0>}
3> kitty_gen_server:close_shop(P).
ok
1>c(kitty\u gen\u服务器)。
{好的,kitty_gen_server}
2> {ok,P}=kitty\u gen\u服务器:start\u link()。
{好的,}
3> kitty_gen_服务器:关闭商店(P)。
好啊

kitty\u genu\u server:start\u link/0
在成功时返回一个元组
{ok,Pid}
,您直接将其存储在
p
中,因此您的下一个调用将
{ok,Pid}
传递到
kitty\u genu\u服务器:关闭商店/1
。您需要使用模式匹配将Pid仅存储在
P
中:

1> c(kitty_gen_server).
{ok,kitty_gen_server}
2> {ok, P} = kitty_gen_server:start_link().
{ok,<0.64.0>}
3> kitty_gen_server:close_shop(P).
ok
1>c(kitty\u gen\u服务器)。
{好的,kitty_gen_server}
2> {ok,P}=kitty\u gen\u服务器:start\u link()。
{好的,}
3> kitty_gen_服务器:关闭商店(P)。
好啊