Skip to content

Instantly share code, notes, and snippets.

@maraino
Created January 24, 2022 21:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save maraino/f228fe2a97923b41adc32c630ae9b905 to your computer and use it in GitHub Desktop.
Save maraino/f228fe2a97923b41adc32c630ae9b905 to your computer and use it in GitHub Desktop.
Pipe example in Go
package main
import (
"fmt"
"log"
"os"
"os/exec"
"os/signal"
"syscall"
"time"
)
func main() {
go pipeHandler()
pager := os.Getenv("PAGER")
cmd := exec.Command(pager)
out, err := cmd.StdinPipe()
if err != nil {
log.Fatal(err)
}
defer out.Close()
cmd.Stdout = os.Stdout
if err := cmd.Start(); err != nil {
log.Fatal(err)
}
for {
fmt.Fprintln(out, time.Now())
}
}
func pipeHandler() {
signals := make(chan os.Signal, 1)
signal.Notify(signals, syscall.SIGCHLD)
defer signal.Stop(signals)
for range signals {
os.Exit(0)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment