There's probably a solution to this, but it could be a lot of work for a small benefit.

If emacsclient --eval could pass in the stdin/stdout/stderr from the terminal to the daemon, then things would work as I expect. But the work-around is easy: emacsclient -c -e '...'

However, I noticed that stderr appears to be available, when there's an error:

$ emacsclient --eval '(man fprintf)'
*ERROR*: Symbol’s value as variable is void: fprintf

and also when it works properly:

$ emacsclient --eval "(list-buffers)"
#<window 194 on *Buffer List*>




On Sat, 28 May 2022 at 12:39, Eli Zaretskii <eliz@gnu.org> wrote:
> Cc: michael.albinus@gmx.de, 55599@debbugs.gnu.org
> Date: Sat, 28 May 2022 22:25:53 +0300
> From: Eli Zaretskii <eliz@gnu.org>
>
> > As to your suggested feature request: I'm not requesting termination of the server non-interactively - I'm just
> > saying that when the shutdown command comes from the command line, the messages be output to the
> > terminal, the way "message" does and not the way yes-or-no-p does.
>
> The terminal is still taken by the client frame it displays.

Sorry, that was incorrect, because I was confused about the situation
to which you were alluding.

The correct response is: when a daemon Emacs doesn't show any frames,
it has no way of communicating with the user, because the standard
streams are no longer available, AFAIK.