I did this recently… let me find the code…
"Run a Cmd object, returning the stdout & stderr contents plus the exit code"
function execute(cmd::Cmd)
out = Pipe()
err = Pipe()
process = run(pipeline(ignorestatus(cmd), stdout=out, stderr=err))
close(out.in)
close(err.in)
(
stdout = String(read(out)),
stderr = String(read(err)),
code = process.exitcode
)
end
execute(`ls`)
execute(`ls --invalid-option`)