Y a-t-il un moyen de rediriger les données imprimées par io: format () code> 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. P>
4 Réponses :
Il suffit de l'exécuter avec Voici un exemple. P> Erlang Code: P> < Pré> xxx pré> en shell: p> erl -noinput -s module fonction -s -s init stop> fichier code>.
Vous pouvez également utiliser l'argument iodevice sur io: fwrite / 3 et laissez-la avoir la valeur Atom Voir la section "Entrée standard / sortie" du io module La documentation de celui-ci. p>
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>
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).
Vous pouvez recompiler votre code avec une transformation d'analyse, transforme des appels comme dans des appels tels que p>