J'ai implémenté un serveur de génération et un superviseur: test_server
et test_sup
. Je veux les tester depuis le shell/CLI. J'ai écrit leurs fonctions start_link
de sorte que leurs noms sont enregistrés localement.Impossible de générer un superviseur erlang à partir du shell
J'ai trouvé que je peux générer le test_server
à partir de la ligne de commande très bien, mais un test_sup
engendré ne me permet pas d'interagir avec le serveur du tout.
Par exemple, je peux frayer un test_server
en exécutant:
1> spawn(test_server, start_link, []).
<0.39.0>
2> registered().
[...,test_server,...]
je peux interagir avec le serveur, et tout semble bien.
Cependant, si j'essaie de faire la même chose avec test_sup
, aucun nouveau nom/PID n'est enregistré dans mon "processus CLI" (en utilisant registered/0
). Mon test_server
semble avoir été engendré, mais je ne peux pas interagir avec lui (voir le commentaire de Lukas Larsson sur SASL pour voir pourquoi c'est vrai).
Je suppose que je codé une erreur dans mon superviseur, mais cette méthode de commencer mon superviseur fonctionne parfaitement bien:
1> {ok, Pid}= test_sup:start_link([]).
{ok, <0.39.0>}
2> unlink(Pid).
true
3> registered().
[...,test_server,test_sup,...]
Pourquoi est-ce que je peux frayer un gen_server mais pas un superviseur?
Mise à jour
Le code que je utilise peut être trouvé dans this post. J'utilise echo_server
et echo_sup
, deux modules très simples.
Étant donné que le code, cela fonctionne:
spawn(echo_server, start_link, []).
et cela ne:
spawn(echo_sup, start_link, []).
Pouvez-vous coller votre code quelque part? –