diff options
| author | Jakob Unterwurzacher | 2022-12-29 13:52:35 +0100 | 
|---|---|---|
| committer | Jakob Unterwurzacher | 2022-12-29 13:57:03 +0100 | 
| commit | ff32e9979130e6237b0d97ef88304fa79ce61b06 (patch) | |
| tree | b59df387878fd438d5c3429512d3e7f22966676b | |
| parent | 7ee4c8e9c3b0fb630b48c5940a7faa220ef5e63a (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.go | 16 | 
1 files changed, 9 insertions, 7 deletions
@@ -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)  	}  | 
