Very good question !
Pipe don't control the underlying process, it just redirects input/output.
Process can control the child process and can redirect its input/output
sys.cmd() is an easy way to start a cmd.exe process.
As you can guess, the Process object can do all of that. I have already thought to put it in the sys module, maybe in a next LuaRT release, and remove sys.cmd() and sys.Pipe()