#file-descriptor #child-process #subprocess #process #child #fd #command

command-fds

用于在创建子进程时传递任意文件描述符的库

6 个版本

0.3.0 2023年12月12日
0.2.3 2023年10月31日
0.2.2 2022年4月1日
0.2.1 2021年8月12日
0.1.0 2021年5月4日

#256 in Unix API

Download history 4703/week @ 2024-04-16 5658/week @ 2024-04-23 4721/week @ 2024-04-30 5337/week @ 2024-05-07 5535/week @ 2024-05-14 4582/week @ 2024-05-21 6040/week @ 2024-05-28 4976/week @ 2024-06-04 5279/week @ 2024-06-11 6133/week @ 2024-06-18 6169/week @ 2024-06-25 4604/week @ 2024-07-02 6575/week @ 2024-07-09 6341/week @ 2024-07-16 5639/week @ 2024-07-23 7776/week @ 2024-07-30

27,345 下载/月
17 个 crate 中使用 (10 个直接使用)

Apache-2.0

19KB
284 代码行数(不包括注释)

command-fds

crates.io page docs.rs page

用于在创建子进程时传递任意文件描述符的库。

示例

use command_fds::{CommandFdExt, FdMapping};
use std::fs::File;
use std::os::unix::io::AsRawFd;
use std::process::Command;

// Open a file.
let file = File::open("Cargo.toml").unwrap();

// Prepare to run `ls -l /proc/self/fd` with some FDs mapped.
let mut command = Command::new("ls");
command.arg("-l").arg("/proc/self/fd");
command
    .fd_mappings(vec![
        // Map `file` as FD 3 in the child process.
        FdMapping {
            parent_fd: file.as_raw_fd(),
            child_fd: 3,
        },
        // Map this process's stdin as FD 5 in the child process.
        FdMapping {
            parent_fd: 0,
            child_fd: 5,
        },
    ])
    .unwrap();

// Spawn the child process.
let mut child = command.spawn().unwrap();
child.wait().unwrap();

许可证

Apache 许可证 2.0 版本 下授权。

贡献

如果您想为此项目做出贡献,请查看我们如何接受贡献的详细说明。

依赖

~2–10MB
~108K SLoC