aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Unterwurzacher2022-12-29 13:52:35 +0100
committerJakob Unterwurzacher2022-12-29 13:57:03 +0100
commitff32e9979130e6237b0d97ef88304fa79ce61b06 (patch)
treeb59df387878fd438d5c3429512d3e7f22966676b
parent7ee4c8e9c3b0fb630b48c5940a7faa220ef5e63a (diff)
main: doMount: call Setsid before starting logger
The logger should be in the new background session together with the gocryptfs process. Before: $ xfce4-terminal -x gocryptfs a b $ ps xao pid,ppid,pgid,sid,comm,args PID PPID PGID SID COMMAND COMMAND 192272 1371 192272 192272 gocryptfs /ssd2/jakob.donotbackup/go/bin/gocryptfs -fg -notifypid=192265 a b 192292 192272 192265 192265 logge <defunct> [logger] <defunct> After: $ xfce4-terminal -x gocryptfs a b $ ps xao pid,ppid,pgid,sid,comm,args PID PPID PGID SID COMMAND COMMAND 211714 1371 211714 211714 gocryptfs /ssd2/jakob.donotbackup/go/bin/gocryptfs -fg -notifypid=211708 a b 211776 211714 211714 211714 logger logger -t gocryptfs-211714-logger Fixes https://github.com/rfjakob/gocryptfs/issues/660
-rw-r--r--mount.go16
1 files changed, 9 insertions, 7 deletions
diff --git a/mount.go b/mount.go
index 434edad..4d72778 100644
--- a/mount.go
+++ b/mount.go
@@ -120,9 +120,18 @@ func doMount(args *argContainer) {
tlog.Info.Println(tlog.ColorGreen + "Filesystem mounted and ready." + tlog.ColorReset)
// We have been forked into the background, as evidenced by the set
// "notifypid".
+ // Do what daemons should do: https://man7.org/linux/man-pages/man7/daemon.7.html
if args.notifypid > 0 {
// Chdir to the root directory so we don't block unmounting the CWD
os.Chdir("/")
+ // Disconnect from the controlling terminal by creating a new session.
+ // This prevents us from getting SIGINT when the user presses Ctrl-C
+ // to exit a running script that has called gocryptfs, or SIGHUP when
+ // xfce4-terminal closes itself ( https://github.com/rfjakob/gocryptfs/issues/660 ).
+ _, err = syscall.Setsid()
+ if err != nil {
+ tlog.Warn.Printf("Setsid: %v", err)
+ }
// Switch to syslog
if !args.nosyslog {
// Switch all of our logs and the generic logger to syslog
@@ -134,13 +143,6 @@ func doMount(args *argContainer) {
// Daemons should redirect stdin, stdout and stderr
redirectStdFds()
}
- // Disconnect from the controlling terminal by creating a new session.
- // This prevents us from getting SIGINT when the user presses Ctrl-C
- // to exit a running script that has called gocryptfs.
- _, err = syscall.Setsid()
- if err != nil {
- tlog.Warn.Printf("Setsid: %v", err)
- }
// Send SIGUSR1 to our parent
sendUsr1(args.notifypid)
}