https://bugs.winehq.org/show_bug.cgi?id=57600
--- Comment #3 from Eric Pouech eric.pouech@gmail.com --- what likely happens is that your app is made of a main engine.exe (which is tagged in the GUI subsystem) and which spawns a child .exe (which is tagged in the CUI subsystem).
engine.exe is started from a shell (which is attached to a console).
The Windows behavior is, when spawning a child process (default behavior): - if parent is attached to a console and child belong to CUI subsystem, the parent's console is inherited by child - if parent is not attached to a console and child belong to CUI subsystem, a new console is created for child - if child belong to GUI subsystem, child is started without any console (whatever the parent's state)
so your app behavior under windows is: shell (console) > engine.exe (no console as GUI) > child.exe (creates a new console)
Wine8 was inheriting the shell console when spawning engine.exe, and also the child Wine9 has been fixed to implement the Windows behavior (so engine.exe is started without console)
when we write that "./wine app | cat" should capture the output into the starting console, it should be under the condition that <app> belongs to the CUI subsystem
since Wine's behavior is now how Windows behaves, we won't change this (or revert the mentionned patch).
I don't see a way to achieve what you'd like from Wine. Maybe your app has some options to redirect log to a file or a pipe that you could use