Tree @e1e43ff0-0b50-4715-b7e7-8c0b5a1cb461/main (Download .tar.gz)
- debian
- .gitignore
- asm_solaris_amd64.s
- doc.go
- Dockerfile.golang
- Dockerfile.riscv
- go.mod
- ioctl.go
- ioctl_bsd.go
- ioctl_solaris.go
- LICENSE
- mktypes.bash
- pty_darwin.go
- pty_dragonfly.go
- pty_freebsd.go
- pty_linux.go
- pty_netbsd.go
- pty_openbsd.go
- pty_solaris.go
- pty_unsupported.go
- README.md
- run.go
- test_crosscompile.sh
- types.go
- types_dragonfly.go
- types_freebsd.go
- types_netbsd.go
- types_openbsd.go
- winsize.go
- winsize_unix.go
- winsize_unsupported.go
- ztypes_386.go
- ztypes_amd64.go
- ztypes_arm.go
- ztypes_arm64.go
- ztypes_dragonfly_amd64.go
- ztypes_freebsd_386.go
- ztypes_freebsd_amd64.go
- ztypes_freebsd_arm.go
- ztypes_freebsd_arm64.go
- ztypes_freebsd_ppc64.go
- ztypes_loong64.go
- ztypes_mipsx.go
- ztypes_netbsd_32bit_int.go
- ztypes_openbsd_32bit_int.go
- ztypes_ppc64.go
- ztypes_ppc64le.go
- ztypes_riscvx.go
- ztypes_s390x.go
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | # pty Pty is a Go package for using unix pseudo-terminals. ## Install ```sh go get github.com/creack/pty ``` ## Examples Note that those examples are for demonstration purpose only, to showcase how to use the library. They are not meant to be used in any kind of production environment. ### Command ```go package main import ( "io" "os" "os/exec" "github.com/creack/pty" ) func main() { c := exec.Command("grep", "--color=auto", "bar") f, err := pty.Start(c) if err != nil { panic(err) } go func() { f.Write([]byte("foo\n")) f.Write([]byte("bar\n")) f.Write([]byte("baz\n")) f.Write([]byte{4}) // EOT }() io.Copy(os.Stdout, f) } ``` ### Shell ```go package main import ( "io" "log" "os" "os/exec" "os/signal" "syscall" "github.com/creack/pty" "golang.org/x/term" ) func test() error { // Create arbitrary command. c := exec.Command("bash") // Start the command with a pty. ptmx, err := pty.Start(c) if err != nil { return err } // Make sure to close the pty at the end. defer func() { _ = ptmx.Close() }() // Best effort. // Handle pty size. ch := make(chan os.Signal, 1) signal.Notify(ch, syscall.SIGWINCH) go func() { for range ch { if err := pty.InheritSize(os.Stdin, ptmx); err != nil { log.Printf("error resizing pty: %s", err) } } }() ch <- syscall.SIGWINCH // Initial resize. defer func() { signal.Stop(ch); close(ch) }() // Cleanup signals when done. // Set stdin in raw mode. oldState, err := term.MakeRaw(int(os.Stdin.Fd())) if err != nil { panic(err) } defer func() { _ = term.Restore(int(os.Stdin.Fd()), oldState) }() // Best effort. // Copy stdin to the pty and the pty to stdout. // NOTE: The goroutine will keep reading until the next keystroke before returning. go func() { _, _ = io.Copy(ptmx, os.Stdin) }() _, _ = io.Copy(os.Stdout, ptmx) return nil } func main() { if err := test(); err != nil { log.Fatal(err) } } ``` |
Commit History @e1e43ff0-0b50-4715-b7e7-8c0b5a1cb461/main
- Bump go 1.13 Guillaume J. Charmes 4 years ago
- remove go.mod in go.mod Guillaume J. Charmes 4 years ago
- Add riscv Guillaume J. Charmes 4 years ago
- Add riscv64 support (#81) Carlos Eduardo (commit: Guillaume J. Charmes) 4 years ago
- Enable solirs in cross compile test. Guillaume J. Charmes 4 years ago
- support for Solaris (#64) Fazal Majid (commit: Guillaume J. Charmes) 4 years ago
- s/kr/creack/ in README Guillaume J. Charmes 4 years ago
- Add crosscopile test script. Guillaume J. Charmes 4 years ago
- Set Ctty in SysProcAttr (#75) Drew DeVault (commit: Keith Rarick) 5 years ago
- Don't set Stdin/Stdout/Stderr if already set (#71) Okunev Yu Dmitry (commit: Guillaume J. Charmes) 5 years ago
- remove deprecated nomenclature Keith Rarick 5 years ago
- go mod init Keith Rarick 5 years ago
- Add StartWithSize to allow resizing pty before starting a command to avoid races (#62) Dustin Spicuzza (commit: Guillaume J. Charmes) 5 years ago
- Add support for OpenBSD 386. Prevents compile errors. (#60) Derek Marcotte (commit: Guillaume J. Charmes) 5 years ago
- Improve error management for openpty (#57) Guillaume J. Charmes (commit: GitHub) 6 years ago
- add openbsd/amd64 support (#58) Guillaume J. Charmes (commit: GitHub) 6 years ago
- Add shell example to readme Guillaume J. Charmes 6 years ago
- Added terminal/pty resize functionality and utility function to inherit size from master's pty to slave. Changes type winsize to make it accessible from outside the package. (#39) Jonathan Logan (commit: Guillaume J. Charmes) 6 years ago
- Prevent golang to set the non-block flag on ptmx open to avoid 100% CPU usage on reads (#53) Guillaume J. Charmes (commit: GitHub) 6 years ago
- Add mips64 mips64le build tags (#47) Guillaume J. Charmes (commit: GitHub) 7 years ago
- Add support for mips, mipsle (#45) vstefanovic (commit: Guillaume J. Charmes) 7 years ago
- Merge pull request #44 from cmarcelo/pr/dragonfly-gofmt Guillaume J. Charmes (commit: GitHub) 7 years ago
- Reformat pty_dragonfly.go file using gofmt Caio Marcelo de Oliveira Filho 7 years ago
- Merge pull request #36 from keybase/master Guillaume J. Charmes (commit: GitHub) 7 years ago
- Merge pull request #41 from mneumann/fix_dragonfly Guillaume J. Charmes 7 years ago
- Support DragonFly BSD Michael Neumann 7 years ago
- Don't attempt to build on windows Steve Sanders 8 years ago
- run: don't override supplied SysProcAttr Jonathan Boulle 8 years ago
- Prevent arm64 file to be compiled anywhere else. Fixed #32. Guillaume J. Charmes 9 years ago
- Merge pull request #31 from hqhq/hq_add_arm64_support Guillaume J. Charmes 9 years ago