2017-02-23 8 views
0

私は特定のフォルダにhttp://localhost:8484をロードするためにHTTPサーバを使用しています。 (テスト目的のために)私は自分のコードで実行 OSコマンドは、次のとおりです。特定のポートでhttp-serverを停止する方法はありますか?

http-server -p 8484 test/ 

と私は実行何でもダウンロードが完了した後:

http-server stop 

しかし、テストが完了した後、私がいることがわかりポート8484のhttpサーバはまだ生きています!私はそれを停止するために実行する必要がありますどのようなコマンド

ps aux | grep httpを実行して、

  • 私は(私はコードからシェルコマンドを実行していますので、それが重要とは思わないが)、私はErlangでコードを書くマックOSX(エル・キャピタン版)
  • を使用しています。
  • のhttpサーバ:https://www.npmjs.com/package/http-server

Erlangで私のコード:

my_test_() -> 
    Pid = spawn(fun() -> 
      Info = os:cmd("http-server -p 8484 test/resources"), 
      io:format(user,"*** Server: ~p~n",[Info]) 
     end), 

%%% Do some job %%% 

    Pid2 = spawn(fun() -> 
      Info = os:cmd("http-server stop"), 
      timer:sleep(200), 
      io:format(user,"*** Server stop: ~p~n",[Info]) 
     end), 
    timer:sleep(200), 
    exit(Pid2, kill), 
    exit(Pid, kill). 

答えて

1

使用:関心のうちまた

kill -9 {pid} 

、あなたが実行されているすべてのプロセスを表示する場合特定のポート、使用:

lsof -i :{port} 

EDIT:殺す-9 ...を使用するには、それをやって、より優雅な方法は、おそらくあり、私が知っている、少し厳しいですが、それは仕事を得るん;-)

+0

答えてくれてありがとう。それはerlangの使用には役立ちません。私はそれを明確にするために私の質問を編集しています – inbaly

0

することができますpercを使用する - Node.jsのHTTPサーバは、Erlangのプロセスではなく、Unixのプロセスは、あなたがモジュールを使用する必要があるため(または、それは実装を参照するコードです掘ります;))。また

、(5607はあなたのUnixのPIDである)Erlangのos:cmd("kill -9 5607").から。

関連する問題