aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2013-08-07 18:49:51 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2013-08-07 18:49:51 +0200
commita5e6c6cd3b458e20643a9cd4202091720901a4d0 (patch)
treecadae7e89b93ef69141e577e69dda539e7571be4
parent543efd7b4b4265ae507b4e3b048bf23a51a726fc (diff)
downloadbusybox-w32-a5e6c6cd3b458e20643a9cd4202091720901a4d0.tar.gz
busybox-w32-a5e6c6cd3b458e20643a9cd4202091720901a4d0.tar.bz2
busybox-w32-a5e6c6cd3b458e20643a9cd4202091720901a4d0.zip
setsid: code shrink, expanded comments
function old new delta setsid_main 56 53 -3 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--miscutils/setsid.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/miscutils/setsid.c b/miscutils/setsid.c
index ad2c8a4de..637081b6c 100644
--- a/miscutils/setsid.c
+++ b/miscutils/setsid.c
@@ -31,7 +31,17 @@ int setsid_main(int argc UNUSED_PARAM, char **argv)
31 31
32 /* setsid() is allowed only when we are not a process group leader. 32 /* setsid() is allowed only when we are not a process group leader.
33 * Otherwise our PID serves as PGID of some existing process group 33 * Otherwise our PID serves as PGID of some existing process group
34 * and cannot be used as PGID of a new process group. */ 34 * and cannot be used as PGID of a new process group.
35 *
36 * Example: setsid() below fails when run alone in interactive shell:
37 * $ setsid PROG
38 * because shell's child (setsid) is put in a new process group.
39 * But doesn't fail if shell is not interactive
40 * (and therefore doesn't create process groups for pipes),
41 * or if setsid is not the first process in the process group:
42 * $ true | setsid PROG
43 * or if setsid is executed in backquotes (`setsid PROG`)...
44 */
35 if (setsid() < 0) { 45 if (setsid() < 0) {
36 pid_t pid = fork_or_rexec(argv); 46 pid_t pid = fork_or_rexec(argv);
37 if (pid != 0) { 47 if (pid != 0) {
@@ -43,7 +53,7 @@ int setsid_main(int argc UNUSED_PARAM, char **argv)
43 * However, the code is larger and upstream 53 * However, the code is larger and upstream
44 * does not do such trick. 54 * does not do such trick.
45 */ 55 */
46 exit(EXIT_SUCCESS); 56 return EXIT_SUCCESS;
47 } 57 }
48 58
49 /* child */ 59 /* child */