-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsysproc_linux.go
More file actions
53 lines (47 loc) · 1.14 KB
/
sysproc_linux.go
File metadata and controls
53 lines (47 loc) · 1.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
//go:build linux
package execx
import "syscall"
// Setpgid places the child in a new process group for group signals.
// @group OS Controls
//
// Example: setpgid
//
// out, _ := execx.Command("printf", "ok").Setpgid(true).Output()
// fmt.Print(out)
// // ok
func (c *Cmd) Setpgid(on bool) *Cmd {
c.ensureSysProcAttr()
c.sysProcAttr.Setpgid = on
return c
}
// Setsid starts the child in a new session, detaching it from the terminal.
// @group OS Controls
//
// Example: setsid
//
// out, _ := execx.Command("printf", "ok").Setsid(true).Output()
// fmt.Print(out)
// // ok
func (c *Cmd) Setsid(on bool) *Cmd {
c.ensureSysProcAttr()
c.sysProcAttr.Setsid = on
return c
}
// Pdeathsig is a no-op on non-Linux platforms; on Linux it signals the child when the parent exits.
// @group OS Controls
//
// Example: pdeathsig
//
// out, _ := execx.Command("printf", "ok").Pdeathsig(syscall.SIGTERM).Output()
// fmt.Print(out)
// // ok
func (c *Cmd) Pdeathsig(sig syscall.Signal) *Cmd {
c.ensureSysProcAttr()
c.sysProcAttr.Pdeathsig = sig
return c
}
func (c *Cmd) ensureSysProcAttr() {
if c.sysProcAttr == nil {
c.sysProcAttr = &syscall.SysProcAttr{}
}
}