- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要写一些类似于编译测试的东西。 Compiletest 通过调用 rustc
进程并捕获 stdout/stderr 来工作。我的项目还没有可运行的二进制文件,因此我需要另一种方法来创建子进程。
我不能使用 channel 或标准输出,因为它不受我的代码控制。
最佳答案
How can I promote a thread to child process
你不能。这只是操作系统不会做的事情;它不是 Rust 特有的。您不能启动任意线程,然后稍后将其移动(“提升”)到另一个进程;线程和进程是截然不同的概念。
My project does not have a binary to run yet
我建议做一个。
如果你只想启动另一个进程,你可以使用std::process::Command
为了那个原因。这将是最推荐的选项。
POSIX 确实有 fork
调用,它会复制进程的整个内存和当前线程,因此理论上您可以使用它来将当前线程“提升”到新进程。
Using this in a multithreaded context can be very complicated并且默认情况下基本上总是会被推荐反对。
Support for fork
on Windows is... limited, at best .如果你只关心 POSIX 系统,你可以使用 fork
from the libc crate .
另见:
capturing stdout/stderr
有 隐藏的、不稳定的方法来改变当前线程 stdout
/stderr
。 Rust 的测试框架使用这些方法。如果你有兴趣使这些稳定,你也许可以 offer to help on the tracking issue .
关于process - 如何在 Rust 中将线程提升为子进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48461320/
我是一名优秀的程序员,十分优秀!