annotate toys/setsid.c @ 402:2551e517b800

Expand comments.
author Rob Landley <rob@landley.net>
date Sat, 14 Jan 2012 23:28:15 -0600
parents 2cec41ee6eea
children 878b94b32866
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
371
2cec41ee6eea Add setsid.
Rob Landley <rob@landley.net>
parents:
diff changeset
1 /* vi: set sw=4 ts=4:
2cec41ee6eea Add setsid.
Rob Landley <rob@landley.net>
parents:
diff changeset
2 *
2cec41ee6eea Add setsid.
Rob Landley <rob@landley.net>
parents:
diff changeset
3 * setsid.c - Run program in a new session ID.
2cec41ee6eea Add setsid.
Rob Landley <rob@landley.net>
parents:
diff changeset
4 *
2cec41ee6eea Add setsid.
Rob Landley <rob@landley.net>
parents:
diff changeset
5 * Copyright 2006 Rob Landley <rob@landley.net>
2cec41ee6eea Add setsid.
Rob Landley <rob@landley.net>
parents:
diff changeset
6 *
2cec41ee6eea Add setsid.
Rob Landley <rob@landley.net>
parents:
diff changeset
7 * Not in SUSv3.
2cec41ee6eea Add setsid.
Rob Landley <rob@landley.net>
parents:
diff changeset
8 * See http://www.opengroup.org/onlinepubs/009695399/utilities/
2cec41ee6eea Add setsid.
Rob Landley <rob@landley.net>
parents:
diff changeset
9
2cec41ee6eea Add setsid.
Rob Landley <rob@landley.net>
parents:
diff changeset
10 USE_SETSID(NEWTOY(setsid, "^<1t", TOYFLAG_USR|TOYFLAG_BIN))
2cec41ee6eea Add setsid.
Rob Landley <rob@landley.net>
parents:
diff changeset
11
2cec41ee6eea Add setsid.
Rob Landley <rob@landley.net>
parents:
diff changeset
12 config SETSID
2cec41ee6eea Add setsid.
Rob Landley <rob@landley.net>
parents:
diff changeset
13 bool "setsid"
2cec41ee6eea Add setsid.
Rob Landley <rob@landley.net>
parents:
diff changeset
14 default y
2cec41ee6eea Add setsid.
Rob Landley <rob@landley.net>
parents:
diff changeset
15 help
2cec41ee6eea Add setsid.
Rob Landley <rob@landley.net>
parents:
diff changeset
16 usage: setsid [-t] command [args...]
2cec41ee6eea Add setsid.
Rob Landley <rob@landley.net>
parents:
diff changeset
17
2cec41ee6eea Add setsid.
Rob Landley <rob@landley.net>
parents:
diff changeset
18 Run process in a new session.
2cec41ee6eea Add setsid.
Rob Landley <rob@landley.net>
parents:
diff changeset
19
2cec41ee6eea Add setsid.
Rob Landley <rob@landley.net>
parents:
diff changeset
20 -t Grab tty (become foreground process, receiving keyboard signals)
2cec41ee6eea Add setsid.
Rob Landley <rob@landley.net>
parents:
diff changeset
21 */
2cec41ee6eea Add setsid.
Rob Landley <rob@landley.net>
parents:
diff changeset
22
2cec41ee6eea Add setsid.
Rob Landley <rob@landley.net>
parents:
diff changeset
23 #include "toys.h"
2cec41ee6eea Add setsid.
Rob Landley <rob@landley.net>
parents:
diff changeset
24
2cec41ee6eea Add setsid.
Rob Landley <rob@landley.net>
parents:
diff changeset
25 void setsid_main(void)
2cec41ee6eea Add setsid.
Rob Landley <rob@landley.net>
parents:
diff changeset
26 {
2cec41ee6eea Add setsid.
Rob Landley <rob@landley.net>
parents:
diff changeset
27 while (setsid()<0)
2cec41ee6eea Add setsid.
Rob Landley <rob@landley.net>
parents:
diff changeset
28 if (vfork()) _exit(0);
2cec41ee6eea Add setsid.
Rob Landley <rob@landley.net>
parents:
diff changeset
29 if (toys.optflags) {
2cec41ee6eea Add setsid.
Rob Landley <rob@landley.net>
parents:
diff changeset
30 setpgid(0,0);
2cec41ee6eea Add setsid.
Rob Landley <rob@landley.net>
parents:
diff changeset
31 tcsetpgrp(0, getpid());
2cec41ee6eea Add setsid.
Rob Landley <rob@landley.net>
parents:
diff changeset
32 }
2cec41ee6eea Add setsid.
Rob Landley <rob@landley.net>
parents:
diff changeset
33 xexec(toys.optargs);
2cec41ee6eea Add setsid.
Rob Landley <rob@landley.net>
parents:
diff changeset
34 }