何らかのスーパーバイザを書きたいと思っています。私は外部プログラムを閉じる関数を実装しようとしています。外部プロセスは、ポートを持つerlangのコードに接続されています。私は、このプログラムを閉じる方法や、シグナルなどを送ることは考えていません。多くのプログラムがSIGPIPEで終了しないことを確認したので、ポートを閉じることは解決策ではありません。あなたはそれをする方法を知っていますか?erlangのポートに接続されたプロセスを終了する
答えて
あなたがOSでのプロセスのPIDを取得するために
{os_pid, OsPid} = erlang:port_info(Port, os_pid).
を使用することができます(http://erlang.org/doc/man/erlang.html#port_info-1を参照してください - 私はあなたが含まれるように、このためのErlangの最新バージョンを必要とするかもしれないと思う、私はによってインストールされたものを考えますUbuntuの12.04でapt-getの十分最近ではありません、私はR15B02はしかし、それを持って知っている)、その後
os:cmd(io_lib:format("kill -9 ~p", [OsPid])).
)(http://erlang.org/doc/man/os.html#cmd-1それを殺すために。
それは私のために働いたが、なぜ殺す信号を送るのか説明することができますか?それは単なる例ですか、そういう仕方で仕上げる理由は何ですか? –
あなたはプロセスをkillする方法を尋ねました:) また、erlang:port_command/2を使用してポート経由でプロセスにメッセージを送信し、穏やかに停止するように指示することもできます。 –
リンクされたプロセスを強制終了すると、外部プロセスを強制終了できます。
-module(portest).
-export([start/1, init/1, kill/0]).
start(ExtPrg) ->
spawn(?MODULE, init, [ExtPrg]).
init(ExtPrg) ->
process_flag(trap_exit, true),
Port = open_port({spawn, ExtPrg}, [{packet, 2}]),
register(extport, self()),
loop(Port).
kill() ->
exit(whereis(extport), kill).
しかし、IO読み取りをブロックした外部プロセスを強制終了することはできません。
- 1. どのポートにLinuxで接続されているプロセスか
- 2. Erlang。ローカルノードに接続しています:*** ERROR:シェルプロセスが終了しました
- 3. プロセスが終了するとWCF tcp接続が開いたままになる
- 4. 終了時にプロセスを終了する
- 5. NHibernate接続を終了するには?
- 6. データベース接続を終了するには?
- 7. パテの接続が終了するとパブリックDNSが接続されます
- 8. C#:プロセスの終了時にプロセスが終了する(タスクマンで)
- 9. intellijの終了postgres接続
- 10. Mail-listener2 - 接続の終了
- 11. Fayeクライアント接続の終了
- 12. プロセスが強制的に強制終了された場合の終了コード
- 13. プロセスの終了ステータスは、終了する前に出力されます。
- 14. forEachが実行された後、mongoose接続を終了するには?
- 15. Kafka:コンシューマ接続を終了する
- 16. Ubuntu 14.04で指定されたポートを使用するすべてのプロセスを終了します。
- 17. スレッドを介して開始されたプロセスを終了する
- 18. node.jsプロセスを終了させるには?
- 19. SSE接続が確立された直後にSignalRサーバがUnityクライアントへの接続を終了しました
- 20. Firefoxアドオンで生成されたプロセスを終了する
- 21. Python - メインで開始されたプロセスを終了する
- 22. セレンテストケースが返されます終了コード0で終了したプロセス
- 23. 子プロセスを終了しようとするとErlang noprocエラーが発生する
- 24. Angular2で作成されたHTTP接続はどのように接続を終了しますか?
- 25. Erlangでスポーンを終了するコール
- 26. ジェンキンススレーブはメッセージでオフラインになる「ERROR:接続終了/接続が中断され、」私たちのジェンキンス奴隷の
- 27. プロセスの終了終了を待つ
- 28. TCP接続が終了する
- 29. 終了値Undef Erlang Spawn
- 30. PHP - pcntl_forkによって開始された子プロセスの終了
同じマシンにありますか?あなたはPIDを持っていますか? –