Re: [hackers] setsid: add optional -f to force fork()
On 2020-07-14, Hiltjo Posthuma wrote: > The below patch adds an -f flag to force fork(2)ing and creating a new > process. Thanks, I applied the patch. Though I wonder, is Linux the only operating system that typically has setsid(1)? It doesn't look like it is available on BSDs. It's such a small tool and it can be implemented portably so I guess it's fine as a part of sbase, but I wonder if there is some other tool with similar functionality on other systems.
Re: [hackers] setsid: add optional -f to force fork()
On Tue, Jul 14, 2020 at 10:15:43AM +0200, Hiltjo Posthuma wrote: > Hi, > > The below patch adds an -f flag to force fork(2)ing and creating a new > process. > > > From a75ef384c11b64732dd6a3adc9249ba6beb8a67e Mon Sep 17 00:00:00 2001 > From: Hiltjo Posthuma > Date: Tue, 14 Jul 2020 10:11:43 +0200 > Subject: [PATCH] setsid: add optional -f to force fork() > > --- > setsid.1 | 3 ++- > setsid.c | 9 +++-- > 2 files changed, 9 insertions(+), 3 deletions(-) > > diff --git a/setsid.1 b/setsid.1 > index d43bcfc..4df6439 100644 > --- a/setsid.1 > +++ b/setsid.1 > @@ -1,4 +1,4 @@ > -.Dd 2015-10-08 > +.Dd 2020-07-14 > .Dt SETSID 1 > .Os sbase > .Sh NAME > @@ -6,6 +6,7 @@ > .Nd run a command in a new session > .Sh SYNOPSIS > .Nm > +.Op Fl f > .Ar cmd > .Op Ar arg ... > .Sh DESCRIPTION > diff --git a/setsid.c b/setsid.c > index 28d3442..3355b40 100644 > --- a/setsid.c > +++ b/setsid.c > @@ -4,10 +4,12 @@ > > #include "util.h" > > +static int fflag = 0; > + > static void > usage(void) > { > - eprintf("usage: %s cmd [arg ...]\n", argv0); > + eprintf("usage: %s cmd [-f] [arg ...]\n", argv0); > } > > int > @@ -16,6 +18,9 @@ main(int argc, char *argv[]) > int savederrno; > > ARGBEGIN { > + case 'f': > + fflag = 1; > + break; > default: > usage(); > } ARGEND > @@ -23,7 +28,7 @@ main(int argc, char *argv[]) > if (!argc) > usage(); > > - if (getpgrp() == getpid()) { > + if (fflag || getpgrp() == getpid()) { > switch (fork()) { > case -1: > eprintf("fork:"); > -- > 2.27.0 > > > -- > Kind regards, > Hiltjo > Bump, any response/feedback to get this in master? -- Kind regards, Hiltjo
Re: [hackers] setsid: add optional -f to force fork()
On Tue, Jul 14, 2020 at 12:15:20PM +0200, Mattias Andrée wrote: > Hi, > > Is there any reason you would want to force it? > > Yes, when getpgrp() != getpid(). I use this in my plumb script for my news program to setsid -f and open a link my browser. Using the setsid -f option the browser is not closed when I close my news program (due to it being in the same process group). The -f option exists already in the util-linux(-ng) implementation: https://www.man7.org/linux/man-pages/man1/setsid.1.html https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/tree/sys-utils/setsid.c#n96 > Regards, > Mattias Andrée > > > On Tue, 14 Jul 2020 10:15:43 +0200 > Hiltjo Posthuma wrote: > > > Hi, > > > > The below patch adds an -f flag to force fork(2)ing and creating a new > > process. > > > > > > From a75ef384c11b64732dd6a3adc9249ba6beb8a67e Mon Sep 17 00:00:00 2001 > > From: Hiltjo Posthuma > > Date: Tue, 14 Jul 2020 10:11:43 +0200 > > Subject: [PATCH] setsid: add optional -f to force fork() > > > > --- > > setsid.1 | 3 ++- > > setsid.c | 9 +++-- > > 2 files changed, 9 insertions(+), 3 deletions(-) > > > > diff --git a/setsid.1 b/setsid.1 > > index d43bcfc..4df6439 100644 > > --- a/setsid.1 > > +++ b/setsid.1 > > @@ -1,4 +1,4 @@ > > -.Dd 2015-10-08 > > +.Dd 2020-07-14 > > .Dt SETSID 1 > > .Os sbase > > .Sh NAME > > @@ -6,6 +6,7 @@ > > .Nd run a command in a new session > > .Sh SYNOPSIS > > .Nm > > +.Op Fl f > > .Ar cmd > > .Op Ar arg ... > > .Sh DESCRIPTION > > diff --git a/setsid.c b/setsid.c > > index 28d3442..3355b40 100644 > > --- a/setsid.c > > +++ b/setsid.c > > @@ -4,10 +4,12 @@ > > > > #include "util.h" > > > > +static int fflag = 0; > > + > > static void > > usage(void) > > { > > - eprintf("usage: %s cmd [arg ...]\n", argv0); > > + eprintf("usage: %s cmd [-f] [arg ...]\n", argv0); > > } > > > > int > > @@ -16,6 +18,9 @@ main(int argc, char *argv[]) > > int savederrno; > > > > ARGBEGIN { > > + case 'f': > > + fflag = 1; > > + break; > > default: > > usage(); > > } ARGEND > > @@ -23,7 +28,7 @@ main(int argc, char *argv[]) > > if (!argc) > > usage(); > > > > - if (getpgrp() == getpid()) { > > + if (fflag || getpgrp() == getpid()) { > > switch (fork()) { > > case -1: > > eprintf("fork:"); > > -- Kind regards, Hiltjo
Re: [hackers] setsid: add optional -f to force fork()
Hi, Is there any reason you would want to force it? Regards, Mattias Andrée On Tue, 14 Jul 2020 10:15:43 +0200 Hiltjo Posthuma wrote: > Hi, > > The below patch adds an -f flag to force fork(2)ing and creating a new > process. > > > From a75ef384c11b64732dd6a3adc9249ba6beb8a67e Mon Sep 17 00:00:00 2001 > From: Hiltjo Posthuma > Date: Tue, 14 Jul 2020 10:11:43 +0200 > Subject: [PATCH] setsid: add optional -f to force fork() > > --- > setsid.1 | 3 ++- > setsid.c | 9 +++-- > 2 files changed, 9 insertions(+), 3 deletions(-) > > diff --git a/setsid.1 b/setsid.1 > index d43bcfc..4df6439 100644 > --- a/setsid.1 > +++ b/setsid.1 > @@ -1,4 +1,4 @@ > -.Dd 2015-10-08 > +.Dd 2020-07-14 > .Dt SETSID 1 > .Os sbase > .Sh NAME > @@ -6,6 +6,7 @@ > .Nd run a command in a new session > .Sh SYNOPSIS > .Nm > +.Op Fl f > .Ar cmd > .Op Ar arg ... > .Sh DESCRIPTION > diff --git a/setsid.c b/setsid.c > index 28d3442..3355b40 100644 > --- a/setsid.c > +++ b/setsid.c > @@ -4,10 +4,12 @@ > > #include "util.h" > > +static int fflag = 0; > + > static void > usage(void) > { > - eprintf("usage: %s cmd [arg ...]\n", argv0); > + eprintf("usage: %s cmd [-f] [arg ...]\n", argv0); > } > > int > @@ -16,6 +18,9 @@ main(int argc, char *argv[]) > int savederrno; > > ARGBEGIN { > + case 'f': > + fflag = 1; > + break; > default: > usage(); > } ARGEND > @@ -23,7 +28,7 @@ main(int argc, char *argv[]) > if (!argc) > usage(); > > - if (getpgrp() == getpid()) { > + if (fflag || getpgrp() == getpid()) { > switch (fork()) { > case -1: > eprintf("fork:");
[hackers] setsid: add optional -f to force fork()
Hi, The below patch adds an -f flag to force fork(2)ing and creating a new process. >From a75ef384c11b64732dd6a3adc9249ba6beb8a67e Mon Sep 17 00:00:00 2001 From: Hiltjo Posthuma Date: Tue, 14 Jul 2020 10:11:43 +0200 Subject: [PATCH] setsid: add optional -f to force fork() --- setsid.1 | 3 ++- setsid.c | 9 +++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/setsid.1 b/setsid.1 index d43bcfc..4df6439 100644 --- a/setsid.1 +++ b/setsid.1 @@ -1,4 +1,4 @@ -.Dd 2015-10-08 +.Dd 2020-07-14 .Dt SETSID 1 .Os sbase .Sh NAME @@ -6,6 +6,7 @@ .Nd run a command in a new session .Sh SYNOPSIS .Nm +.Op Fl f .Ar cmd .Op Ar arg ... .Sh DESCRIPTION diff --git a/setsid.c b/setsid.c index 28d3442..3355b40 100644 --- a/setsid.c +++ b/setsid.c @@ -4,10 +4,12 @@ #include "util.h" +static int fflag = 0; + static void usage(void) { - eprintf("usage: %s cmd [arg ...]\n", argv0); + eprintf("usage: %s cmd [-f] [arg ...]\n", argv0); } int @@ -16,6 +18,9 @@ main(int argc, char *argv[]) int savederrno; ARGBEGIN { + case 'f': + fflag = 1; + break; default: usage(); } ARGEND @@ -23,7 +28,7 @@ main(int argc, char *argv[]) if (!argc) usage(); - if (getpgrp() == getpid()) { + if (fflag || getpgrp() == getpid()) { switch (fork()) { case -1: eprintf("fork:"); -- 2.27.0 -- Kind regards, Hiltjo