From: ludo@gnu.org (Ludovic Courtès)
To: Danny Milosavljevic <dannym@scratchpost.org>
Cc: 30498@debbugs.gnu.org
Subject: [bug#30498] [WIP v2 shepherd] shepherd: If /dev/kmsg is writable, use it for logging.
Date: Tue, 27 Feb 2018 10:19:47 +0100 [thread overview]
Message-ID: <87inai6b7w.fsf@gnu.org> (raw)
In-Reply-To: <20180226233214.6fe40fa3@scratchpost.org> (Danny Milosavljevic's message of "Mon, 26 Feb 2018 23:32:14 +0100")
Hi Danny,
Danny Milosavljevic <dannym@scratchpost.org> skribis:
>> As for cryptsetup, what if the service that runs crypsetup simply
>> parameterizes ‘log-output-port’ to /dev/console? That would give us the
>> current behavior, right?
>
> I don't understand why this current-output-port stuff is somehow passed on to
> forked processes in the first place (why does cryptsetup care what I do
> to guile variables?).
>
> scheme@(guile-user)> (current-output-port (%make-void-port "w"))
> scheme@(guile-user)> (system* "ls" "/")
> scheme@(guile-user)>
Funny no? :-)
This is in libguile/posix.c, ‘scm_open_process’ and ‘start_child’: when
the current input/output/error port isn’t a file port, FDs 0/1/2 in the
child are made to point to /dev/null. Otherwise, they are inherited as
file descriptors.
For cryptsetup, this should be what we want if we do:
(call-with-output-file "/dev/console"
(lambda (port)
(parameterize ((log-output-port port)
(current-input-port port)
(current-error-port port))
(invoke "cryptsetup" …))))
Or do we even need to care about ‘log-output-port’? Thoughts?
> It wasn't my intention to inherit them as file descriptors... also, for guile
> buffering ports, how does it inherit those as file descriptors? Will it still
> do the custom line buffering that shepherd does, also when a child process
> writes there?
Shepherd does not process the stdout/err of child processes in any way,
so there shouldn’t be buffering there.
Ludo’.
next prev parent reply other threads:[~2018-02-27 9:20 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-17 12:20 [bug#30498] [PATCH shepherd] shepherd: If /dev/kmsg is writable, use it for logging Danny Milosavljevic
2018-02-17 12:25 ` Danny Milosavljevic
2018-02-17 16:48 ` [bug#30498] [WIP v2 " Danny Milosavljevic
2018-02-17 16:49 ` Danny Milosavljevic
2018-02-26 18:04 ` Ludovic Courtès
2018-02-26 21:51 ` Danny Milosavljevic
2018-02-27 9:22 ` Ludovic Courtès
2018-02-26 22:32 ` Danny Milosavljevic
2018-02-27 9:19 ` Ludovic Courtès [this message]
2018-03-03 21:54 ` Ludovic Courtès
2018-03-03 22:37 ` Danny Milosavljevic
2018-03-05 16:51 ` Ludovic Courtès
2018-03-06 8:09 ` Danny Milosavljevic
2018-03-07 12:46 ` Ludovic Courtès
2018-03-07 11:04 ` [bug#30498] [PATCH 0/3] Log to syslog whenever possible Ludovic Courtès
2018-03-07 11:04 ` [bug#30498] [PATCH 1/3] Turn 'log-output-port' into a parameter Ludovic Courtès
2018-03-07 11:04 ` [bug#30498] [PATCH 2/3] Simplify 'make-shepherd-output-port' Ludovic Courtès
2018-03-07 11:04 ` [bug#30498] [PATCH 3/3] Use syslog for logging when running as root Ludovic Courtès
2018-03-07 15:25 ` [bug#30498] [PATCH 0/3] Log to syslog whenever possible Ludovic Courtès
2018-03-15 17:00 ` bug#30498: " Ludovic Courtès
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87inai6b7w.fsf@gnu.org \
--to=ludo@gnu.org \
--cc=30498@debbugs.gnu.org \
--cc=dannym@scratchpost.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).