calling command with some arguments works but not with others but works from console
Separate your arguments.
top -o cpu -n 10 -l 2
is not what you are executing. What you're passing as arguments to the command is equivalent to using top "-o cpu" "-n 10" "-l 2"
in a shell (which if you try, it will give you the exact same output).
Most commands will strictly parse that as 3 arguments. Since POSIX arguments don't require a space, top
splits off the -o
as the first option, and uses the rest as its argument. This works for the numerical arguments mostly by accident, but the for -o
it looks for a field named " cpu"
, which there isn't.
Instead, use
exec.Command(app, "-o", "cpu", "-n", "10", "-l", "2")