diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2013-08-07 18:49:51 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2013-08-07 18:49:51 +0200 |
commit | a5e6c6cd3b458e20643a9cd4202091720901a4d0 (patch) | |
tree | cadae7e89b93ef69141e577e69dda539e7571be4 | |
parent | 543efd7b4b4265ae507b4e3b048bf23a51a726fc (diff) | |
download | busybox-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.c | 14 |
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 */ |