From 7554da41ae0b670944932d1b918b3202cd560403 Mon Sep 17 00:00:00 2001 From: pgf Date: Mon, 1 Aug 2005 22:52:09 +0000 Subject: commiting: 0000028 03-16-05 patch: new setsid applet git-svn-id: svn://busybox.net/trunk/busybox@11015 69ca8d6d-28ef-0310-b511-8ec308f3f277 --- miscutils/setsid.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 miscutils/setsid.c (limited to 'miscutils/setsid.c') diff --git a/miscutils/setsid.c b/miscutils/setsid.c new file mode 100644 index 000000000..7df35be3b --- /dev/null +++ b/miscutils/setsid.c @@ -0,0 +1,46 @@ +/* + * setsid.c -- execute a command in a new session + * Rick Sladkey + * In the public domain. + * + * 1999-02-22 Arkadiusz Mi¶kiewicz + * - added Native Language Support + * + * 2001-01-18 John Fremlin + * - fork in case we are process group leader + * + * 2004-11-12 Paul Fox + * - busyboxed + */ + +#include +#include +#include +#include "busybox.h" + +int +setsid_main(int argc, char *argv[]) { + + if (argc < 2) { + bb_show_usage(); + } + + if (getpgrp() == getpid()) { + switch(fork()){ + case -1: + bb_perror_msg_and_die("fork"); + case 0: + break; + default: /* parent */ + exit(0); + } + /* child falls through */ + } + + setsid(); /* no error possible */ + + execvp(argv[1], argv + 1); + + bb_perror_msg_and_die(argv[1]); + +} -- cgit v1.2.3-55-g6feb