diff options
author | Jakob Unterwurzacher | 2015-11-09 23:21:11 +0100 |
---|---|---|
committer | Jakob Unterwurzacher | 2015-11-09 23:33:35 +0100 |
commit | 51fcf61630905f5dc9370e18522cd0a6c086856d (patch) | |
tree | 28fb05508d5c7227b07e01d20360b98e14606473 /sendusr1.go | |
parent | 273d8086aefdcdbd361d9be31d362b128a3f60f4 (diff) |
Use new arg "-notifypid" for more robust daemonization
No more string matching on the parent command line!
Diffstat (limited to 'sendusr1.go')
-rw-r--r-- | sendusr1.go | 33 |
1 files changed, 8 insertions, 25 deletions
diff --git a/sendusr1.go b/sendusr1.go index c5dbb7c..5de8a6f 100644 --- a/sendusr1.go +++ b/sendusr1.go @@ -1,38 +1,21 @@ package main import ( - "bytes" "fmt" - "io/ioutil" "os" "syscall" ) -const ( - wrapperContains = "gocryptfs\000" -) - -// Send USR1 to the parent process. This notifies it that the -// mounting has completed sucessfully. -// -// Checks /proc/$PPID/cmdline to make sure we do not kill an unrelated process. -func sendUsr1() { - ppid := os.Getppid() - fn := fmt.Sprintf("/proc/%d/cmdline", ppid) - cmdline, err := ioutil.ReadFile(fn) +// Send signal USR1 to "pid" (usually our parent process). This notifies it +// that the mounting has completed sucessfully. +func sendUsr1(pid int) { + p, err := os.FindProcess(pid) if err != nil { - fmt.Printf("sendUsr1: ReadFile: %v\n", err) + fmt.Printf("sendUsr1: FindProcess: %v\n", err) return } - if bytes.Contains(cmdline, []byte(wrapperContains)) { - p, err := os.FindProcess(ppid) - if err != nil { - fmt.Printf("sendUsr1: FindProcess: %v\n", err) - return - } - err = p.Signal(syscall.SIGUSR1) - if err != nil { - fmt.Printf("sendUsr1: Signal: %v\n", err) - } + err = p.Signal(syscall.SIGUSR1) + if err != nil { + fmt.Printf("sendUsr1: Signal: %v\n", err) } } |