Uruchamianie poleceń w Erlangu

Polecenia w Erlangu można uruchamiać m.in. za pomocą os:cmd(Command). Niestety dopiero po wykonaniu polecenia zobaczymy rezultat w postaci „stringa”. Szukając bardziej elastycznego rozwiązania, które na bieżąco wyświetlałoby postępy wykonywania polecenia, natrafiłem na drugi sposób z użyciem portów w Erlangu: How to run a system command in Erlang?. Po dostosowaniu kodu do własnych potrzeb wygląda on następująco:

-module(port).
-export([run/1]).

run(Cmd) ->
  Port = erlang:open_port({spawn, Cmd},[use_stdio, exit_status]),
  loop(Port).

loop(Port) ->
  receive
    {Port, {data, Data}} ->
      io:format(Data),
      loop(Port);
    {Port, {exit_status, _}} -> ok
  end.

Posted on 02/11/2011, in Erlang. Bookmark the permalink. Dodaj komentarz.

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s

%d bloggers like this: