1

ets で存在しないテーブル (t3) を検索した後、ユーザーが作成したすべてのテーブル (t1 および t2) が削除されます。それはバグですか、それとも ets の奇妙な機能ですか?

これがEshellのコードです。


Eshell V5.9.1  (abort with ^G)

1> ets:new(t1, [named_table]).

t1

2> ets:new(t2, [named_table]).

t2

3> ets:all().

[t2,t1,8207,4110,13,file_io_servers,inet_hosts_file_byaddr,
 inet_hosts_file_byname,inet_hosts_byaddr,inet_hosts_byname,
 inet_cache,inet_db,global_pid_ids,global_pid_names,
 global_names_ext,global_names,global_locks,ac_tab]

4> ets:insert(t1, {1,2}).

true

5> ets:lookup(t1, 1).

[{1,2}]

6> ets:lookup(t2, 1).

[]

7> ets:all().        

[t2,t1,8207,4110,13,file_io_servers,inet_hosts_file_byaddr,
 inet_hosts_file_byname,inet_hosts_byaddr,inet_hosts_byname,
 inet_cache,inet_db,global_pid_ids,global_pid_names,
 global_names_ext,global_names,global_locks,ac_tab]

8> ets:lookup(t3, 1).

** exception error: bad argument
     in function  ets:lookup/2
        called as ets:lookup(t3,1)

9> ets:all().        

[8207,4110,13,file_io_servers,inet_hosts_file_byaddr,
 inet_hosts_file_byname,inet_hosts_byaddr,inet_hosts_byname,
 inet_cache,inet_db,global_pid_ids,global_pid_names,
 global_names_ext,global_names,global_locks,ac_tab]

10> 

ここで何が問題なのか教えてくれる人はいますか?

4

1 に答える 1

5

存在しないテーブルを検索すると、シェルが「クラッシュ」するというエラーが発生します。新しいシェルが起動され、最初のシェルに属していた ets が削除されていることを除いて、透明に見えます。

于 2012-10-26T09:03:56.183 に答える