When I try to execute following command that returns error or doesn't exit on Windows - I always get empty list instead of error returned as string so for example:
I get:
[] = os:cmd("blah").
instead of something like
"command not found" = os:cmd("blah").
In linux - everything works as expected so I get "/bin/sh: line 1: blah: command not found\n"
Therefore I cannot rely on that function when I need to know how execution finished etc. Please suggest some general way how to execute command and get results including error code.
Thanks!
I am not familiar with windows at all, but I'm sure, you should look this. This is implementation
os:cmd/1
function.There is problem with
os:cmd/1
. This function doesn't let you know, was command execution successful or not, so you only have to rely on certain command shell behaviour (which is platform dependent).I'd recommend you to use
erlang:open_port/2
function. Something like that:So function
my_exec/1
will return process exit code along with process stdout.