parent
8457f3d60d
commit
dbdd22c2ac
@ -0,0 +1,2 @@ |
||||
nohup |
||||
nohup.exe |
||||
@ -0,0 +1,3 @@ |
||||
|
||||
build: |
||||
go build .
|
||||
@ -0,0 +1,7 @@ |
||||
module lcthw.dev/go/go-coreutils/nohup |
||||
|
||||
go 1.25.3 |
||||
|
||||
require github.com/mattn/go-isatty v0.0.20 |
||||
|
||||
require golang.org/x/sys v0.6.0 // indirect |
||||
@ -0,0 +1,4 @@ |
||||
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= |
||||
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= |
||||
golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= |
||||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= |
||||
@ -0,0 +1,45 @@ |
||||
package main |
||||
|
||||
import ( |
||||
"fmt" |
||||
"os" |
||||
"os/exec" |
||||
"github.com/mattn/go-isatty" |
||||
"flag" |
||||
"log" |
||||
"io" |
||||
) |
||||
|
||||
func main() { |
||||
flag.Parse() |
||||
prog := flag.Args()[0] |
||||
|
||||
// ignore SIGHUP
|
||||
|
||||
if isatty.IsTerminal(os.Stdout.Fd()) { |
||||
fmt.Println("Is Terminal") |
||||
} else if isatty.IsCygwinTerminal(os.Stdout.Fd()) { |
||||
fmt.Println("Is cygwin/msys2 terminal") |
||||
} else { |
||||
cmd := exec.Command(prog) |
||||
if cmd.Err != nil { log.Fatal(cmd.Err) } |
||||
|
||||
in, err := cmd.StdinPipe() |
||||
if err != nil { log.Fatal(err) } |
||||
in.Close() |
||||
|
||||
stdout, err := cmd.StdoutPipe() |
||||
if err != nil { log.Fatal(err) } |
||||
|
||||
stderr, err := cmd.StderrPipe() |
||||
if err != nil { log.Fatal(err) } |
||||
|
||||
output := io.MultiReader(stdout, stderr) |
||||
|
||||
err = cmd.Start() |
||||
if err != nil { log.Fatal(err) } |
||||
|
||||
_, err = io.Copy(os.Stdout, output) |
||||
if err != nil { log.Fatal(err) } |
||||
} |
||||
} |
||||
Loading…
Reference in new issue