2011-07-27 7 views
1

これは私のErlangのシェルで動作します。アーラン: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のシェルでそれを実行し、私はこれを取得:

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)暗号サーバーを起動して停止する必要があるようです。しかし、私のアプリケーションでそれを開始し停止するのに良い場所はありますか?

多くのおかげで、あなたが取得しているエラーは暗号アプリケーションが起動されなかったことを示し

答えて

4

LRP。それを開始する簡単な方法は、ちょうどそうのようなerlにパラメータとして、それを追加することです:

$ erl -s crypto 

私はアーランのための暗号化の現在の実装と過去のリリースノートを見ていたと私は、次の結論に達しました(私が間違っている場合、誰かが私を修正してください):

  1. アーランは< 14Aは暗号ライブラリは、ポートドライバを使用するので任意の関数を呼び出す前に開始する必要がリリース。 13B04で記述したエラーは、暗号を開始しなかった後に得られたため、これは理にかなっています。
  2. Erlangリリース> = 14Aでは、実装でNIFが使用されるため、暗号を開始する必要はありません。これは意味があります.crypto_server.erlの現在の実装はgen_serverテンプレートであり、14B03ではcrypto:sha/1を動作させるためにアプリケーションを起動する必要はありません。