Skip to content

Instantly share code, notes, and snippets.

@Petelin
Created July 25, 2018 08:08
Show Gist options
  • Save Petelin/ed28c17300510e0a27639cf6c35d03af to your computer and use it in GitHub Desktop.
Save Petelin/ed28c17300510e0a27639cf6c35d03af to your computer and use it in GitHub Desktop.
run real job in subprocess
package main
import (
"fmt"
"os"
"os/exec"
"time"
)
func main() {
fmt.Println(os.Getpid(), os.Getgid())
mode := os.Getenv("TTT_RUN_MODE")
if mode == "" {
runMaster()
} else if mode == "WORKER" {
doJob()
}
}
func doJob() {
fmt.Println("do job")
for {
fmt.Println("aaaa", os.Getpid(), os.Getppid(), os.Getgid())
time.Sleep(time.Second * 1)
}
}
func runMaster() {
for {
fmt.Println("run master")
name := os.Args[0]
args := os.Args[1:len(os.Args)]
cmd := exec.Command(name, args...)
cmd.Stdin = os.Stdin
cmd.Stderr = os.Stderr
cmd.Stdout = os.Stdout
cmd.Env = append(os.Environ(), "TTT_RUN_MODE=WORKER")
if err := cmd.Run(); err != nil {
fmt.Println(err)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment