vonH

vonH

How do I kill a process ` #PID<0.186.0` in iex?

When I run the Plug and I recompile I wind up having to use Ctrl C to quit iex and start again. Witht the help of rlwrap I can use the cursor to recall the previoius commands. But how do I kill the Plug process to restart it after I recompile.

Is there some command I can use to kill #PID<0.186.0 which I assume if the plug’s process?

Erlang/OTP 19 [erts-8.3] [source-d5c06c6] [64-bit] [smp:2:2] [async-threads:10] [hipe] [kernel-poll:false]

Interactive Elixir (1.4.1) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> c "myfuncs/funcs_router.ex"

[MyRouter]
iex(2)> {:ok, _} = Plug.Adapters.Cowboy.http MyRouter, []
{:ok, #PID<0.186.0>}
iex(3)> c "myfuncs/funcs_router.ex"

...

[MyRouter]
iex(4)> {:ok, _} = Plug.Adapters.Cowboy.http MyRouter, []
** (MatchError) no match of right hand side value: {:error, {:already_started, #PID<0.186.0>}}

Most Liked

kelvinst

kelvinst

@cmkarlsson is right in his answer, but making it short:

Process.exit(pid, :normal) == please stop my dear process :pray::stop_sign:
Process.exit(pid, :kill) == :boom::gun:

Important: it’s not a threat to kill, it’s killing! So the process has no option to exit gracefully, it just stops processing whatever it was processing and has no time to do the exit routine it has.

12
Post #9
cmkarlsson

cmkarlsson

It is used when a process traps exists. Then the :normal message is transformed into an {:'EXIT', from, :normal} message which is delivered to the message queue of the process and it can choose to exit itself when it receives it. But if the process is not trapping exists nothing happens. This is different from :kill and reason explained below.

You can send any exit reason to the process. :kill and :normal are special. Any other reason has the following behaviour:

  • If process is not trapping exists it will exit with reason
  • If process is trapping exists the signal is transformed to {:'EXIT', from, reason} and deliver to the message queue

:kill is an untrappable exit and the process will be killed.

(Mostly stolen from h(Process.exit))

grych

grych

Creator of Drab
Process.exit(pid("0.186.0"), :normal)
OvermindDL1

OvermindDL1

:normal is a normal kill response, which most things will ignore just fine. Sending anything else is not ignored though, but traditionally :kill is sent or :brutalkill depending.

grych

grych

Creator of Drab

Well, then try to kill it instead of normal exit:

Process.exit(pid, :kill)

Where Next?

Popular in Questions Top

lanycrost
Hi everyone! I need implement if…else if…else condition from my elixir code, and anymore of this control flow structures not work proper...
New
belgoros
I’m not a pro in using Regex and can’t figure out why the following behaviour happens, especially if we take into account the difference ...
New
Brian
What is the proper way to load a module from a file in to IEX? In the python world, doing something like this pretty standard: from ....
New
LegitStack
I’m hoping you guys can give me some general advice and perhaps code examples if you’re feeling up to it. I’m very interested in Elixir,...
New
jerry
Good day to you all. I have been struggling to get a query involving like and ilike to work. Can anyone assist me on this, please? pro...
New
itssasanka
Hi all, Trying to get some more clarity over utc_datetime and naive_datetime for Ecto: https://hexdocs.pm/ecto/Ecto.Schema.html#module-...
New
quazar
How to set Jason to encode all fields in ecto schema, I don’t care about security and implementing only is taking long list of attributes...
New
mgjohns61585
Could someone help me? I'm making my first elixir program, number guessing game. I can't figure out how to convert the user's guess from ...
New
fireproofsocks
Forgive me if this is obvious, but how does one delete a database record WITHOUT selecting it first? https://hexdocs.pm/ecto/Ecto.Repo.h...
New
chewm
Hi guys, nice to meet you to the whole forum, I’m new here, I’m trying to configure visual studio code for elixir, right now the intellis...
New

Other popular topics Top

lanycrost
Hi everyone! I need implement if…else if…else condition from my elixir code, and anymore of this control flow structures not work proper...
New
lastday4you
I wanted to check elixir version in phoenix because i found that my elixir is 1.5 but when i use Enum.chunk_by it said the function is un...
New
stefanchrobot
What’s the safe way to decode a JSON string into a struct? I want to avoid calling String.to_atom. Jason.decode can give me a map with st...
New
shahryarjb
Hello, I get Persian date from my client and convert it to normal calendar like this: def jalali_string_to_miladi_english_number(persi...
New
chrisalley
ExUnit now has describe blocks which is a welcome addition coming from RSpec. In the docs, it states that nested hierarchies of describe ...
New
vonH
In asking this question I am more interested about the expressiveness of the language itself and less concerned about the availability of...
New
sacepums
Hey guys. I'm new to elixir and im really stocked about it. But I ran into a bit of problem - I need to convert a date sting, for examp...
New
script
If I have a string “1000 cfu/ml” . I want to remove the characters and / and space . So the string is like this "1000" What is the ...
New
qwerescape
Is there a way to get the call stack or stack trace at any point in the code? Not from exceptions, but an expression that returns how the...
New
beno
I will often find my self writing things similar to: case some_value do nil -&gt; something() "" -&gt; something() _ -&gt; someth...
New

We're in Beta

About us Mission Statement