archimondain

archimondain

Killing a process synchronously

I would like to know if the function

Process.exit(pid, :kill)

Is synchronous : once the function has returned, are we sure that no more code from the process pid will be executed ? If not how could we kill a process in a synchronous way ?

Best

Marked As Solved

lud

lud

I am not sure that the function is synchronous, but to be sure, you could first set a monitor on the process with Process.monitor, then kill it, then wait for the :DOWN message from the monitor.

Also Liked

Qqwy

Qqwy

TypeCheck Core Team

Because the Elixir documentation (as well as the Erlang documentation of :erlang.exit/2, which this function delegates to) only mention “sends an exit signal”, I am fairly certain that the function is asynchronous.

The approach mentioned by @lud works. However, this will not (always) prevent other code from running on pid before it exits. It will only prevent code running on the process calling Process.exit to wait with continuing before pid has exited.

However, another question would be: what are you trying to do? It seems like a rather odd request. Maybe your actual problem can be resolved in a wholly different manner.

Qqwy

Qqwy

TypeCheck Core Team

From the documentation of Process.monitor/1:

If the process is already dead when calling Process.monitor/1 , a :DOWN message is delivered immediately.

So you will receive the :DOWN message in that case as well.

lud

lud

Also if you call Process.monitor on a pid that is not alive, the down message will contain :noproc as the reason, so you will know your process was not alive.

Where Next?

Popular in Questions Top

9mm
I am constructing a JSON object (map) and I need to conditionally set a field. I’m trying to write proper elixir-way code… and I’m at a l...
New
aadeshere1
I have a another noob question about loop. Since elixir is immutable, while loop is not directly possible. total = 10 while total != 0 ...
New
siddhant3030
Hi, I have to write a raw query for one of my project. But till now I have used ecto queries and don’t have much experience writing raw ...
New
mcarvalho
What is the difference between System.get_env and Application.get_env? For example, what are best practices to use one versus another.
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
beno
I will often find my self writing things similar to: case some_value do nil -> something() "" -> something() _ -> someth...
New
LegitStack
I’m trying to make a websocket server in Phoenix or raw Elixir. I heard about gun, I think I could use cowboy, but since I’m not that sma...
New
ashish173
I am using Ecto timestamps with postgres, I can see the timestamps() use the :naive_dateime but for my use case I wanted to store the ti...
New
jason.o
In the code below, if the create action is not set to accept “extra_key” as an input, it errors out with a message shown above. Is there ...
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

Other popular topics Top

sorentwo
Hello! tl;dr Announcing Oban, an Ecto based job processing library with a focus on reliability and historical observability. After spen...
985 42842 311
New
siddhant3030
Hi, I have to write a raw query for one of my project. But till now I have used ecto queries and don’t have much experience writing raw ...
New
Patoshizzle
After calling mix ecto.create I get this error: 17:00:32.162 [error] GenServer #PID<0.412.0> terminating ** (Postgrex.Error) FATAL...
New
vrod
I am using the Starship cross-shell prompt – it seems pretty nice, but I get some errors: [WARN] - (starship::utils): Executing command ...
New
aalberti333
As the title describes, I’m trying to run Enum.map() over a list of key/value pairs, where the value is a map. My data looks like this: ...
New
freewebwithme
Using vs code and installed ElixirLS: support and debugger. And I got an error popped up on start up says Failed to run ‘elixir’ comma...
New
boundedvariable
I am going through the kafka architecture. All the features what the kafka is providing are already in Erlang. I would like hear your opi...
New
AstonJ
Please see the new poll here: Which code editor or IDE do you use? (Poll) (2022 Edition) It’s been a while since we first asked this, I...
208 31107 143
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
openscript
Hello! Sorry for this astonishing simple question, but I’m really stuck. I try to set up the intellij-elixir plugin, but I don’t know ho...
New

We're in Beta

About us Mission Statement