main: disconnect from the controlling terminal
This prevents us from getting SIGINT when the user kills the running script.
This commit is contained in:
parent
9be3d2c214
commit
53aedc3783
9
mount.go
9
mount.go
|
@ -96,9 +96,9 @@ func doMount(args *argContainer) int {
|
||||||
// Initialize FUSE server
|
// Initialize FUSE server
|
||||||
srv := initFuseFrontend(masterkey, args, confFile)
|
srv := initFuseFrontend(masterkey, args, confFile)
|
||||||
tlog.Info.Println(tlog.ColorGreen + "Filesystem mounted and ready." + tlog.ColorReset)
|
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
|
// We have been forked into the background, as evidenced by the set
|
||||||
// "notifypid".
|
// "notifypid".
|
||||||
var paniclog *os.File
|
|
||||||
if args.notifypid > 0 {
|
if args.notifypid > 0 {
|
||||||
// Chdir to the root directory so we don't block unmounting the CWD
|
// Chdir to the root directory so we don't block unmounting the CWD
|
||||||
os.Chdir("/")
|
os.Chdir("/")
|
||||||
|
@ -124,6 +124,13 @@ func doMount(args *argContainer) int {
|
||||||
syscall.Dup2(int(paniclog.Fd()), 1)
|
syscall.Dup2(int(paniclog.Fd()), 1)
|
||||||
syscall.Dup2(int(paniclog.Fd()), 2)
|
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
|
// Send SIGUSR1 to our parent
|
||||||
sendUsr1(args.notifypid)
|
sendUsr1(args.notifypid)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue