Tree @ee9c2be5-fe94-44cf-9c7c-a1adf815887d/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_loongarchx.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 @ee9c2be5-fe94-44cf-9c7c-a1adf815887d/main
- Set upstream metadata fields: Bug-Database, Bug-Submit, Repository, Repository-Browse. Debian Janitor 2 years ago
- Update changelog for 1.1.15-1 release Anthony Fok 2 years ago
- Mark library package with "Multi-Arch: foreign" Anthony Fok 2 years ago
- Bump Standards-Version to 4.6.0 (no change) Anthony Fok 2 years ago
- Change Section from devel to golang Anthony Fok 2 years ago
- Update upstream source from tag 'upstream/1.1.15' Anthony Fok 2 years ago
- New upstream version 1.1.15 Anthony Fok 2 years ago
- Fix typo in openbsd build constraint (#125) Graham Clark (commit: GitHub) 2 years ago
- Add support for OpenBSD mips64 (#123) Aaron Bieber (commit: GitHub) 2 years ago
- Simplify solaris implementation. (#120) Guillaume J. Charmes (commit: GitHub) 2 years ago