diff options
author | Elliott Hughes <enh@google.com> | 2021-04-19 12:46:58 -0700 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2021-04-20 03:29:59 -0500 |
commit | 9cacde056ce7f6bd4b3a2f181017a33c6dff3e5a (patch) | |
tree | abfe09637fc32dcf4c7e7e01792d7e20da7c9e77 /toys/other | |
parent | 95a15d238120167959bd7aee3e71ac5be3a72804 (diff) | |
download | toybox-9cacde056ce7f6bd4b3a2f181017a33c6dff3e5a.tar.gz |
setsid(1): call setsid(2) before setpgrp(2).
The new cpio test that uses setsid fails if you're using the toybox
setsid. Move the setpgrp() call before the vfork() but after the
setsid().
Diffstat (limited to 'toys/other')
-rw-r--r-- | toys/other/setsid.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/toys/other/setsid.c b/toys/other/setsid.c index 70672424..654ce7a1 100644 --- a/toys/other/setsid.c +++ b/toys/other/setsid.c @@ -24,14 +24,15 @@ void setsid_main(void) { int i; - // This must be before vfork() or tcsetpgrp() will hang waiting for parent. - setpgid(0, 0); - // setsid() fails if we're already session leader, ala "exec setsid" from sh. // Second call can't fail, so loop won't continue endlessly. while (setsid()<0) { - pid_t pid = XVFORK(); + pid_t pid; + + // This must be before vfork() or tcsetpgrp() will hang waiting for parent. + setpgid(0, 0); + pid = XVFORK(); if (pid) { i = 0; if (FLAG(w)) { |