main: disconnect from the controlling terminal

This prevents us from getting SIGINT when the user
kills the running script.
This commit is contained in:
Jakob Unterwurzacher 2017-01-02 23:29:52 +01:00
parent 9be3d2c214
commit 53aedc3783
1 changed files with 8 additions and 1 deletions

View File

@ -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)
}