Tree @2497551e-ab1b-4ec4-a0fb-c9b9f8d39055/upstream/1.1.18+git20220421.1.0d412c9 (Download .tar.gz)
- asm_solaris_amd64.s
- doc.go
- doc_test.go
- Dockerfile.golang
- Dockerfile.riscv
- go.mod
- ioctl.go
- ioctl_bsd.go
- ioctl_solaris.go
- ioctl_unsupported.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
- start.go
- start_windows.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 @2497551e-ab1b-4ec4-a0fb-c9b9f8d39055/upstream/1.1.18+git20220421.1.0d412c9
- Import upstream version 1.1.18+git20220421.1.0d412c9 Debian Janitor 1 year, 4 months ago
- Provide correct pty/tty file paths on OpenBSD (#148) Joel Sing (commit: GitHub) 2 years ago
- Add some basic tests (#145) Fraser Waters (commit: GitHub) 2 years ago
- fix aix compile error (#144) Guillaume J. Charmes (commit: GitHub) 2 years ago
- Remove go 1.6 on macos test run (#143) Fraser Waters (commit: GitHub) 2 years ago
- Fix windows compilation (#142) Guillaume J. Charmes (commit: GitHub) 2 years ago
- Add GHA workflow to run test_crosscompile and go test (#141) Fraser Waters (commit: GitHub) 2 years ago
- Remove ppc from freebsd as it is not available in go1.18beta1. Check error in Getsize(). (#137) Guillaume J. Charmes (commit: GitHub) 2 years ago
- Use uint16 in winsize_unsupported.go (#136) Ryo Ota (commit: GitHub) 2 years ago
- Rename loongarchx to loong64. (#130) abner.chen (commit: GitHub) 2 years ago