when setsid failed, the pid and sid doesn't equal, so remove following condition statement. if (getsid(0) != pid)
Following is the content and output of test program. root@p1022ds:~# cat sid_test.c int main() { pid_t pid; pid = setsid(); if (pid < 0) { int fd; pid = getpid(); if (getsid(0) != pid) { printf("setsid failed: pid %d ppid %d sid %d pgid %d", pid, getppid(), getsid(0), getpgid(0)); } } } root@p1022ds:~# ./sid_test setsid failed: pid 2452 ppid 2408 sid 2408 pgid 2452 root@p1022ds:~# Fix following runtime issue of getty: root@p1025:~# getty 115200 /dev/ttyQE1 getty: setsid: Operation not permitted Signed-off-by: Zhenhua Luo <zhenhua....@freescale.com> --- loginutils/getty.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/loginutils/getty.c b/loginutils/getty.c index 0f060ae..6bfdf43 100644 --- a/loginutils/getty.c +++ b/loginutils/getty.c @@ -548,15 +548,6 @@ int getty_main(int argc UNUSED_PARAM, char **argv) * a session leader - which is quite possible for getty! */ pid = getpid(); - if (getsid(0) != pid) { - //for debugging: - //bb_perror_msg_and_die("setsid failed:" - // " pid %d ppid %d" - // " sid %d pgid %d", - // pid, getppid(), - // getsid(0), getpgid(0)); - bb_perror_msg_and_die("setsid"); - } /* Looks like we are already a session leader. * In this case (setsid failed) we may still have ctty, * and it may be different from tty we need to control! -- 1.9.1 _______________________________________________ busybox mailing list busybox@busybox.net http://lists.busybox.net/mailman/listinfo/busybox