#shell #pty #terminal #tty

pty-shell

通过 pty 启动并控制 shell

6 个版本

使用旧的 Rust 2015

0.2.0 2016 年 11 月 8 日
0.1.4 2016 年 8 月 13 日
0.1.3 2016 年 1 月 26 日
0.1.2 2015 年 12 月 30 日

#25 in #pty


2  个crate使用

MIT 许可证

15KB
394 代码行(不包括注释)

pty-shell

pty crate 的扩展。

https://speakerdeck.com/hibariya/control-a-shell-with-pty-shell

用法

将以下内容添加到您的 Cargo.toml

[dependencies]
pty-shell = '0.2.0'

例如,将 src/main.rs 添加如下

extern crate pty_shell;

use pty_shell::{winsize, PtyShell, PtyHandler};

struct Shell;
impl PtyHandler for Shell {
    fn input(&mut self, input: &[u8]) {
      /* do something with input */
    }

    fn output(&mut self, output: &[u8]) {
      /* do something with output */
    }

    fn resize(&mut self, winsize: &winsize::Winsize) {
      /* do something with winsize */
    }

    fn shutdown(&mut self) {
      /* prepare for shutdown */
    }
}

fn main() {
    let child = pty::fork().unwrap();

    child.exec("bash");
    child.proxy(Shell);
    child.wait();
}

回调样式

使用 pty_shell::PtyCallback.

child.proxy(
    PtyCallback::new()
        .input(|input| { /* do something with input */ })
        .output(|output| { /* do something with output */ })
        .build()
    )
);

事件类型

  • 输入
  • 输出
  • 调整大小
  • 关闭

贡献

  1. 分支它 ( https://github.com/hibariya/pty-shell/fork )
  2. 创建您的功能分支 (git checkout -b my-new-feature)
  3. 提交您的更改 (git commit -am 'Add some feature')
  4. 推送到分支 (git push origin my-new-feature)
  5. 创建新的 Pull Request

许可证

版权所有 (c) 2015 Hika Hibariya

分发许可证 MIT License.

依赖

~4MB
~72K SLoC