In Erlang ist die Standardmethode zur Verwaltung von OS-Prozessen Häfen .
Der Exit-Status des gespawnten OS-Prozesses wird als Nachricht gesendet, wenn die Option exit_status
hinzugefügt zu offener_Hafen :
1> P = open_port({spawn, "/bin/ls unknown_file_name"}, [exit_status]).
#Port<0.486>
/bin/ls: cannot access unknown_file_name: No such file or directory
2> flush().
Shell got {#Port<0.486>,{exit_status,2}}
ok
Daten können auf stdin des gespawnten OS-Prozesses geschrieben werden, indem eine Nachricht an port gesendet wird oder indem port_befehl Funktion und der Inhalt von stdout wird als Nachricht gesendet. (Beachten Sie auch {line, L}
y {packet, N}
Optionen von open_port
) :
1> P = open_port({spawn, "/bin/cat"}, [stream, binary]).
#Port<0.486>
2> true = port_command(P, <<"data">>).
true
3> flush().
Shell got {#Port<0.486>,{data,<<"data">>}}
ok
4> true = port_close(P).
true
Stderr kann auch nach stdout umgeleitet werden:
1> P = open_port({spawn, "/bin/ls unknown_file_name"}, [stderr_to_stdout, binary]).
#Port<0.486>
2> flush().
Shell got {#Port<0.486>,
{data,<<"/bin/ls: cannot access unknown_file_name: No such file or directory\n">>}}
ok
Sie können jedoch keine Kill-Signale mit Ports senden, aber wenn Sie Ports schließen, indem Sie eine Nachricht an Port senden oder indem Sie port_close Der externe Prozess kann beendet werden durch SIGPIPE Signal.