提问人:Radu C 提问时间:11/16/2023 最后编辑:Radu C 更新时间:11/16/2023 访问量:18
我可以让 Process 不关闭 stdin 管道吗?
Can I get Process to not close the stdin pipe?
问:
我遇到了一个我不想执行的边缘情况(我的副本中的第 161 行,使用 Symfony 6.3) - 接下来的它很好。Process
fclose($this-pipes[0])
Symfony\Component\Process\Pipes\AbstractPipes::write
unset
目前,我像这样解决这个问题:
$p = new Process(...$args);
$p->setInput((function () {
while (true) {
yield "";
}
})());
有没有更好的方法来达到相同的结果?
具体案例
docker compose exec --no-TTY
并提前退出,即使基础命令仍在运行(并生成输出),如果 stdin 已关闭。(澄清:没有提前退出作为正常行为,所以这就是为什么我提到确实采用参数的版本)docker exec -i
docker exec
-i
-i
答:
0赞
Radu C
11/16/2023
#1
有一个稍微好一点的方法:
use Symfony\Component\Process\InputStream;
$p->setInput(new InputStream());
如果我对流对象不执行任何操作,则它的行为与问题文本中的生成器相同。->write()
评论