in reply to Re^2: capture stdout and stderr from external command
in thread capture stdout and stderr from external command

Windows can also do 2>&1 like bash. So how about like this?
$pm->start($cmds[$child] . " > /tmp/$$.$child.log 2>&1")
$child may be unique through commands. And collect the outputs afterwards?