指定コマンドを別プロセスで起動
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.
|


todogzm
#5353()
Rating4/8=0.50
与えられた文字列のコマンドを、別プロセスで実行してください。 異なるPIDのプロセスが立ち上がり、指定したコマンドを実行することが条件です。
あわせて、実行結果のリターンコードと、別プロセスが出力した標準出力を受け取る方法も記載してください。
今回投稿する上で、別プロセスとして実行するコマンドの与え方は自由ですが、実行した結果、何らかの損害を与えるようなコマンドは埋め込まないようにお願いします。
[ reply ]