我想从Python程序中产生一个Rust进程,并将Python的标准输出重定向到它的标准输入中。我已经使用了以下功能:如何将输出从Python进程重定向到Rust进程?
process = subprocess.Popen(["./target/debug/mypro"], stdin=subprocess.PIPE)
,并尝试使用写入子:
process.stdin.write(str.encode(json.dumps(dictionnaire[str(index)]))) #Write bytes of Json representation of previous track
我没有收到拉斯特任何错误,但标准输入似乎没有采取任何输入标准输出根本不打印任何东西。
这里是我目前运行锈代码的版本:
extern crate rustc_serialize;
use rustc_serialize::json::Json;
use std::fs::File;
use std::io;
use std::env;
use std::str;
fn main(){
let mut buffer = String::new();
let stdin = io::stdin();
//stdin.lock();
stdin.read_line(&mut buffer).unwrap();
println!{"{}", buffer};
println!{"ok"};
}
有人可能会对您的问题提出更直接的回答,但同时请让我建议[ØMQ](http://zeromq.org/)满足所有进程间通信需求。它附带了[Python](https://github.com/zeromq/pyzmq)和[Rust](https://github.com/erickt/rust-zmq)的绑定。 – kazemakase
听起来不错。我已经把你的问题转移到了帖子的标题上,这是Stack Overflow所在的位置。接下来,我鼓励你编辑你的问题,以包含重要的信息:程序*做什么*以及你期望它做什么。 – Shepmaster
*我一直无法找到任何使用文件描述符打开管道的方法。* - 除了您的代码**显示您做了**:'pipe_in = unsafe {Stdio :: from_raw_fd(fd)}; let mut my_pipe = Pipe :: new(); my_pipe.reader = pipe_in;'。 – Shepmaster