From 539e2802ebd2680602de0a2c76069b7f555392d9 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Sun, 11 May 2014 00:00:52 +0200 Subject: getty: explain when setsid() fails. no code changes Signed-off-by: Denys Vlasenko --- loginutils/getty.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/loginutils/getty.c b/loginutils/getty.c index 0f060ae6c..4b1b73bef 100644 --- a/loginutils/getty.c +++ b/loginutils/getty.c @@ -556,6 +556,16 @@ int getty_main(int argc UNUSED_PARAM, char **argv) // pid, getppid(), // getsid(0), getpgid(0)); bb_perror_msg_and_die("setsid"); + /* + * When we can end up here? + * Example: setsid() fails when run alone in interactive shell: + * # getty 115200 /dev/tty2 + * because shell's child (getty) is put in a new process group. + * But doesn't fail if shell is not interactive + * (and therefore doesn't create process groups for pipes), + * or if getty is not the first process in the process group: + * # true | getty 115200 /dev/tty2 + */ } /* Looks like we are already a session leader. * In this case (setsid failed) we may still have ctty, -- cgit v1.2.3