challenge 指定コマンドを別プロセスで起動

与えられた文字列のコマンドを、別プロセスで実行してください。 異なるPIDのプロセスが立ち上がり、指定したコマンドを実行することが条件です。

あわせて、実行結果のリターンコードと、別プロセスが出力した標準出力を受け取る方法も記載してください。

今回投稿する上で、別プロセスとして実行するコマンドの与え方は自由ですが、実行した結果、何らかの損害を与えるようなコマンドは埋め込まないようにお願いします。

Posted feedbacks - Erlang

os:cmdではリターンコード取得ができないので、けっこう面倒らしい。Pidをとるのはさらに面倒?

実行結果
$erl -noshell -run ext exec "echo hello" -s init stop
stdout: hello
exit_status: 0
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
-module(ext).
-export([exec/1]).

exec([Cmd]) ->
    Port = open_port({spawn, Cmd}, [binary,exit_status]),
    wait(Port).

wait(Port) ->
    receive 
        {Port, {data, BinData}} ->
            io:format("stdout: ~s", [BinData]),
            wait(Port);
        {Port, {exit_status, Status}} ->
            io:format("exit_status: ~p~n", [Status])
    end.

Index

Feed

Other

Link

Pathtraq

loading...