Only use Setsid on Unix.

Setsid is not a part of syscall.SysProcAttr on Windows, so we only set that on
systems that have it.
This commit is contained in:
Klaus Post 2015-08-14 15:32:07 +02:00
parent 7c84d810d3
commit 2dcb527828
2 changed files with 15 additions and 1 deletions

View File

@ -28,6 +28,8 @@ type SFTP struct {
cmd *exec.Cmd
}
var sysProcAttr syscall.SysProcAttr
func startClient(program string, args ...string) (*SFTP, error) {
// Connect to a remote host and request the sftp subsystem via the 'ssh'
// command. This assumes that passwordless login is correctly configured.
@ -37,7 +39,7 @@ func startClient(program string, args ...string) (*SFTP, error) {
cmd.Stderr = os.Stderr
// ignore signals sent to the parent (e.g. SIGINT)
cmd.SysProcAttr = &syscall.SysProcAttr{Setsid: true}
cmd.SysProcAttr = &sysProcAttr
// get stdin and stdout
wr, err := cmd.StdinPipe()

12
backend/sftp/sftp_unix.go Normal file
View File

@ -0,0 +1,12 @@
// +build !windows
package sftp
import (
"syscall"
)
func init() {
// ignore signals sent to the parent (e.g. SIGINT)
sysProcAttr = syscall.SysProcAttr{Setsid: true}
}