#pty #fork #伪终端 #tty # #终端

shpool_pty

使用新的伪终端 (PTY) 进行分支

5 个不稳定版本

使用旧的 Rust 2015

0.3.1 2024 年 4 月 2 日
0.3.0 2023 年 11 月 8 日
0.2.1 2023 年 11 月 7 日
0.2.0 2023 年 11 月 7 日
0.1.0 2023 年 9 月 22 日

#3 in #伪

Download history 1/week @ 2024-04-14 14/week @ 2024-05-19 9/week @ 2024-05-26 19/week @ 2024-06-02 213/week @ 2024-06-09 64/week @ 2024-06-16 72/week @ 2024-06-23 36/week @ 2024-06-30 49/week @ 2024-07-07 36/week @ 2024-07-14 12/week @ 2024-07-21 32/week @ 2024-07-28

132 每月下载次数
2 个crate中使用 (通过 libshpool)

MIT 许可证

24KB
450

shpool_pty

pty crate 的分支,添加了一些额外的功能以帮助实现 shpool。有关更多信息,请参阅主 pty crate。


lib.rs:

PTY

Crate docs-badge license-badge travis-badge

pty crate 提供了 pty crate 的 pty::fork() 方法。这将在父进程中使用新的伪终端 (PTY) 进行分支。

此crate依赖于以下内容

  • libc
  • POSIX 环境

使用方法

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

[dependencies]
pty = "0.2"

并在您的crate根目录下添加以下内容

extern crate shpool_pty;

pty::fork()

此函数返回 pty::Child。它表示子进程及其 PTY。

例如,以下代码通过 pty::fork() 启动 tty(1) 命令,并输出命令的结果。

extern crate shpool_pty;
extern crate libc;

use std::ffi::CString;
use std::io::Read;
use std::process::{Command};

use shpool_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");
  }
}

依赖关系

~61–335KB