From 53aedc378345f7dba5cdd0544b4aa60733505623 Mon Sep 17 00:00:00 2001 From: Jakob Unterwurzacher Date: Mon, 2 Jan 2017 23:29:52 +0100 Subject: [PATCH] main: disconnect from the controlling terminal This prevents us from getting SIGINT when the user kills the running script. --- mount.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/mount.go b/mount.go index bd65fc6..3e93169 100644 --- a/mount.go +++ b/mount.go @@ -96,9 +96,9 @@ func doMount(args *argContainer) int { // Initialize FUSE server srv := initFuseFrontend(masterkey, args, confFile) tlog.Info.Println(tlog.ColorGreen + "Filesystem mounted and ready." + tlog.ColorReset) + var paniclog *os.File // We have been forked into the background, as evidenced by the set // "notifypid". - var paniclog *os.File if args.notifypid > 0 { // Chdir to the root directory so we don't block unmounting the CWD os.Chdir("/") @@ -124,6 +124,13 @@ func doMount(args *argContainer) int { syscall.Dup2(int(paniclog.Fd()), 1) syscall.Dup2(int(paniclog.Fd()), 2) } + // 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) }