10个版本
使用旧的Rust 2015
0.2.2 | 2017年6月25日 |
---|---|
0.2.1 | 2016年11月9日 |
0.2.0 | 2016年9月5日 |
0.1.6 | 2015年11月14日 |
0.1.3 | 2015年7月19日 |
#9 in #pseudo-terminal
466 每月下载量
在 10 个crate(9个直接)中使用
21KB
400 行
PTY
该pty
crate提供pty::fork()
。这使得父进程通过新的伪终端(PTY)进行Fork。
此crate依赖于以下内容
libc
库- POSIX环境
使用方法
将其添加到您的 Cargo.toml
[dependencies]
pty = "0.2"
并将其添加到您的crate根目录
extern crate pty;
pty::fork()
此函数返回 pty::Child
。它表示子进程及其PTY。
例如,以下代码通过pty::fork()
启动tty(1)
命令,并输出命令的结果。
extern crate pty;
extern crate libc;
use std::ffi::CString;
use std::io::Read;
use std::ptr;
use pty::fork::*;
fn main() {
let fork = Fork::from_ptmx().unwrap();
if let Some(mut master) = fork.is_parent().ok() {
// Read output via PTY master
let mut output = String::new();
match master.read_to_string(&mut output) {
Ok(_nread) => println!("child tty is: {}", output.trim()),
Err(e) => panic!("read error: {}", e),
}
}
else {
// Child process just exec `tty`
Command::new("tty").status().expect("could not execute tty");
}
}
运行时,我们在子进程中获得新的PTY。
$ tty
/dev/pts/5
$ cargo run
Running `target/debug/example`
child tty is: /dev/pts/8
文档
最新版本的API文档: http://hibariya.github.io/pty-rs/pty/index.html
贡献
- 分叉它( https://github.com/hibariya/pty-rs/fork )
- 创建您的功能分支(
git checkout -b my-new-feature
) - 提交您的更改(
git commit -am 'Add some feature'
) - 将更改推送到分支(
git push origin my-new-feature
) - 创建一个新的Pull Request
许可证
版权所有 (c) 2015 Hika Hibariya
在 MIT 许可证 下分发。
依赖关系
~110KB