mirror of
https://github.com/wahyd4/forego.git
synced 2026-08-09 05:07:05 +10:00
work on darwin
This commit is contained in:
@@ -17,13 +17,13 @@ lint: $(SRC)
|
||||
release: forego-linux forego-osx forego-windows
|
||||
|
||||
forego-linux: $(SRC)
|
||||
env GOOS=linux GOARCH=386 go build -o $@
|
||||
env GOOS=linux GOARCH=386 go build -o
|
||||
|
||||
forego-osx: $(SRC)
|
||||
env GOOS=darwin GOARCH=386 go build -o $@
|
||||
env GOOS=darwin GOARCH=386 go build -o
|
||||
|
||||
forego-windows: $(SRC)
|
||||
env GOOS=windows GOARCH=386 go build -o $@
|
||||
env GOOS=windows GOARCH=386 go build -o
|
||||
|
||||
$(BIN): $(SRC)
|
||||
go build -o $@ $(SRC)
|
||||
go build -o $@
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"syscall"
|
||||
"time"
|
||||
)
|
||||
|
||||
func (p *Process) Start() {
|
||||
command := []string{"/bin/bash", "-c", fmt.Sprintf("source \"%s\" 2>/dev/null; %s", filepath.Join(p.Root, ".profile"), p.Command)}
|
||||
p.cmd = exec.Command(command[0], command[1:]...)
|
||||
p.cmd.Dir = p.Root
|
||||
p.cmd.Env = p.envAsArray()
|
||||
p.cmd.Stdin = p.Stdin
|
||||
p.cmd.Stdout = p.Stdout
|
||||
p.cmd.Stderr = p.Stderr
|
||||
p.cmd.SysProcAttr = &syscall.SysProcAttr{}
|
||||
p.cmd.SysProcAttr.Setsid = true
|
||||
p.cmd.Start()
|
||||
}
|
||||
|
||||
func (p *Process) Signal(signal syscall.Signal) {
|
||||
group, _ := os.FindProcess(-1 * p.cmd.Process.Pid)
|
||||
group.Signal(signal)
|
||||
}
|
||||
|
||||
func ShutdownProcesses(of *OutletFactory) {
|
||||
shutdown_mutex.Lock()
|
||||
of.SystemOutput("shutting down")
|
||||
for name, ps := range processes {
|
||||
of.SystemOutput(fmt.Sprintf("sending SIGTERM to %s", name))
|
||||
ps.Signal(syscall.SIGTERM)
|
||||
}
|
||||
go func() {
|
||||
time.Sleep(shutdownGraceTime)
|
||||
for name, ps := range processes {
|
||||
of.SystemOutput(fmt.Sprintf("sending SIGKILL to %s", name))
|
||||
ps.Signal(syscall.SIGKILL)
|
||||
}
|
||||
}()
|
||||
}
|
||||
Reference in New Issue
Block a user