2011-07-27 28 views
1

這工作在我的二郎殼:二郎:問題crypo:SHA()

1> U = default_user_name(). 
2> crypto:start(). 
3> crypto:sha(U). 
4> crypto:stop(). 

但是當我編譯如下:

default_pw() -> 
    U = default_user_name(), 
    crypto:start(), 
    crypto:sha(U), 
    crypto:stop(). 

而在Erlang shell的執行它,我得到這個:

1> person:default_pw()。

**異常錯誤:錯誤的參數

in function port_control/3 

    called as port_control(crypto_drv04,5,<<"jDoe">>) 

in call from crypto:control/2 

兩個問題:

1)什麼是我做錯了什麼?

2)似乎我需要啓動和停止加密服務器。但是,在我的應用程序中是否有更好的地方開始和停止它?

非常感謝,

LRP

回答

4

你所得到的錯誤指示加密應用程序沒有啓動。一個簡單的方法來啓動它只是把它作爲一個參數添加到erl像這樣:

$ erl -s crypto 

我看了一下目前執行加密和Erlang的過去發行說明和我來到了以下結論(有人請糾正我,如果我錯了):

  1. 二郎釋放< 14A需要加密之前要調用任何函數因爲庫使用的端口驅動程序啓動。這是有道理的,因爲我沒有開始加密之後得到了你在13B04中描述的錯誤。
  2. 由於實現現在使用NIF,因此Erlang版本> = 14A不需要啓動加密。這是有道理的,因爲crypto_server.erl的當前實現只是一個gen_server模板,而在14B03上,我不需要啓動應用程序就可以使crypto:sha/1工作。