func Spawn(tokens []string) (int, error) { cmd, lookError := exec.LookPath(tokens[0]) if lookError != nil { log.Printf("[ERROR] [process] Spawn.exec.LookPath(%s) >>> %s\n", tokens[0], lookError) return 0, lookError } var sys_attr syscall.SysProcAttr var proc_attr syscall.ProcAttr proc_attr.Sys = &sys_attr proc_attr.Env = os.Environ() proc_attr.Files = []uintptr{uintptr(syscall.Stdin), uintptr(syscall.Stdout), uintptr(syscall.Stderr)} pid, forkError := syscall.ForkExec(cmd, tokens, &proc_attr) if forkError != nil { log.Printf("[ERROR] [process] Spwan.syscall.ForkExec(%s) >>> %s\n", cmd, forkError) return 0, forkError } return pid, nil }