setsid: code shrink, expanded comments

function                                             old     new   delta
setsid_main                                           56      53      -3

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2013-08-07 18:49:51 +02:00
parent 543efd7b4b
commit a5e6c6cd3b

View File

@ -31,7 +31,17 @@ int setsid_main(int argc UNUSED_PARAM, char **argv)
/* setsid() is allowed only when we are not a process group leader. /* setsid() is allowed only when we are not a process group leader.
* Otherwise our PID serves as PGID of some existing process group * Otherwise our PID serves as PGID of some existing process group
* and cannot be used as PGID of a new process group. */ * and cannot be used as PGID of a new process group.
*
* Example: setsid() below fails when run alone in interactive shell:
* $ setsid PROG
* because shell's child (setsid) 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 setsid is not the first process in the process group:
* $ true | setsid PROG
* or if setsid is executed in backquotes (`setsid PROG`)...
*/
if (setsid() < 0) { if (setsid() < 0) {
pid_t pid = fork_or_rexec(argv); pid_t pid = fork_or_rexec(argv);
if (pid != 0) { if (pid != 0) {
@ -43,7 +53,7 @@ int setsid_main(int argc UNUSED_PARAM, char **argv)
* However, the code is larger and upstream * However, the code is larger and upstream
* does not do such trick. * does not do such trick.
*/ */
exit(EXIT_SUCCESS); return EXIT_SUCCESS;
} }
/* child */ /* child */