Не следует создавать системные задачи в слепой надежде, что они будут работать правильно. Если происходит сбой системной задачи, в вызывающем процессе OTP должны быть предприняты некоторые действия, иначе рано или поздно произойдет sh в процессе работы, и никто не узнает, что произошло и почему.
Существует много возможных Scenar ios, я бы go с Task.start_link/1
(при условии, что прерывания вызывающего процесса завершаются) или с Task.async/1
, сопровождаемым явным Task.await/1
где-то в дереве наблюдения.
Если, несмотря на все вышеописанное, вас не волнует надежность, используйте Kernel.spawn/1
, как показано ниже
pid = spawn(System, :cmd, ~w|zsh -c com.spotify.Client|)
# Process.monitor(pid) # yet give it a chance to handle errors
IO.puts("done.")