ets weirdness when using -run

Bengt Kleberg <>
Wed Jun 19 10:38:17 CEST 2002


> Date: Tue, 18 Jun 2002 16:24:13 -0500
> From: Chris Pressey <>
> Subject: ets weirdness when using -run
> To: 
> MIME-version: 1.0
> Content-transfer-encoding: 7BIT
> 
> I have a program that uses a public, named ets table like so:
...deleted

> But here is what happens when I run it from the command line:
> 
> 
...deleted

> =ERROR REPORT==== 18-Jun-2002::16:22:00 ===
> Error in process <0.30.0> with exit value:
> {badarg,[{ets,lookup,[my_ets,"Key"]},{eg,new,1}]}
> 
> 
> Any thoughts on what I might be doing wrong to make my_ets just vanish
> like that?

at a guesss your original, ets table creating, process exists before
the spawned process gets to the ets:lookup() bit. no original process,
no ets table.

i have included a slight delay before exiting, and then your program
seems to work. see below.


bengt
-------------- next part --------------
-module(eg).
-export([get_args/0, new/1]).

get_args() ->
	start( "Key" ),
%	init:stop( ).
	timer:apply_after( 2000, init, stop, [] ).

start(Key) ->
  my_ets = ets:new(my_ets, [public, named_table]),
  io:fwrite("~p~n", [ets:info(my_ets)]),
  start_new(lists:flatten(Key)).

start_new(Key) ->
  spawn(?MODULE, new, [Key]).

new(Key) ->
  io:fwrite("~p~n", [ets:info(my_ets)]),
  case ets:lookup(my_ets, Key) of
    [_] ->
       io:fwrite("Already in database~n");
    _ ->
       io:fwrite("Not yet in database~n")
  end.


More information about the erlang-questions mailing list