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:
parent
543efd7b4b
commit
a5e6c6cd3b
@ -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 */
|
||||||
|
Loading…
Reference in New Issue
Block a user