2 个版本
0.1.1 | 2021 年 7 月 1 日 |
---|---|
0.1.0 | 2021 年 6 月 28 日 |
#7 in #crt
每月 22 次下载
用于 chrome-remote-interface
145KB
5K SLoC
winspawn
在 Windows 上生成进程以传递通用 CRT 的文件描述符。
使用 _spawn
& _dup
。
示例
use winspawn::{move_fd, spawn, FileDescriptor, Mode};
use std::mem;
use std::io;
use std::fs;
use std::os::windows::io::IntoRawHandle;
fn main() -> io::Result<()> {
let file = fs::File::open("Cargo.toml")?;
let handle = file.into_raw_handle();
let fd = FileDescriptor::from_raw_handle(handle, Mode::ReadOnly)?;
let mut proc = move_fd(&fd, 3, |_| {
// print fd 3 stat
spawn("python", ["-c", r#""import os; print(os.stat(3))""#])
})?;
let exit_code = proc.wait()?;
assert_eq!(0, exit_code);
Ok(())
}
许可证:MIT/Apache-2.0
lib.rs
:
在 Windows 上生成进程以传递通用 CRT 的文件描述符。
使用 _spawn
& _dup
。
示例
use winspawn::{move_fd, spawn, FileDescriptor, Mode};
use std::mem;
use std::io;
use std::fs;
use std::os::windows::io::IntoRawHandle;
fn main() -> io::Result<()> {
let file = fs::File::open("Cargo.toml")?;
let fd = FileDescriptor::from_raw_handle(file, Mode::ReadOnly)?;
let mut proc = move_fd(&fd, 3, |_| {
// print fd 3 stat
spawn("python", ["-c", r#""import os; print(os.stat(3))""#])
})?;
let exit_code = proc.wait()?;
assert_eq!(0, exit_code);
Ok(())
}
依赖项
~124MB
~2M SLoC