6
votes

Rediriger la sortie de l'erlang Shell dans un fichier

Y a-t-il un moyen de rediriger les données imprimées par io: format () de erlang shell dans un fichier? Je sais que je peux ouvrir un fichier (iodevice) et écrire des données directement dans celui-ci, mais cela nécessite un changement de code et je ne veux pas faire maintenant.


0 commentaires

4 Réponses :


10
votes

Il suffit de l'exécuter avec erl -noinput -s module fonction -s -s init stop> fichier .

Voici un exemple.

Erlang Code: < Pré> xxx

en shell: xxx


0 commentaires

2
votes

Vous pouvez également utiliser l'argument iodevice sur io: fwrite / 3 et laissez-la avoir la valeur Atom standard_io lorsque vous ne le souhaitez pas dirigé vers un fichier. Sinon, donnez-le le fichier.

Voir la section "Entrée standard / sortie" du io module La documentation de celui-ci.


0 commentaires

14
votes

Lorsqu'un processus appelle io: format () code> et des fonctions similaires, le processus envoie des messages de demande IO à son processus de groupe_leader. Un simple hack est donc d'ouvrir un fichier et de la définir comme le groupe_leader des processus produisant la sortie. Voici un exemple de redirection de la sortie du processus Shell vers un fichier.

1> {ok, F} = file:open("z", [write]).
{ok,<0.36.0>}
2> group_leader(F, self()).
3> io:format("Where am I going to appear?~n").       
4>


3 commentaires

Nice Hack! Pourrait être assez utile


Ceci est des siècles après la réponse. Mais comment puis-je annuler cela? Comme dans, après cela, comment puis-je recommencer à récupérer des messages dans la coque?


Pour revenir à l'impression à la coquille, vous pouvez faire Erlang: group_leader (io).



1
votes

Vous pouvez recompiler votre code avec une transformation d'analyse, transforme des appels comme xxx

dans des appels tels que xxx p> plus que vous devez ajouter Ceci dans votre code de démarrage et vous avez terminé: xxx


0 commentaires