Php 通过STDIO与子进程双向通信
我正试图通过PHP脚本与Stockfish国际象棋引擎通信。为此,我正在使用,因此需要逐行发送命令。例如,这是我通常在Windows命令提示符下输入的内容:Php 通过STDIO与子进程双向通信,php,cmd,exec,Php,Cmd,Exec,我正试图通过PHP脚本与Stockfish国际象棋引擎通信。为此,我正在使用,因此需要逐行发送命令。例如,这是我通常在Windows命令提示符下输入的内容: Stockfish.exe position startpos go depth 16 Stockfish.exe是的64位版本 我没能用电脑做这件事。以下是我如何尝试的: exec("stockfish.exe\nposition startpos\ngo depth 16"); 引擎运行,但命令未执行,因此我得到: 我应该在哪里得到
Stockfish.exe
position startpos
go depth 16
Stockfish.exe是的64位版本
我没能用电脑做这件事。以下是我如何尝试的:
exec("stockfish.exe\nposition startpos\ngo depth 16");
引擎运行,但命令未执行,因此我得到:
我应该在哪里得到这样的东西:
我读过相关问题,但找不到解决办法。有什么办法可以做到这一点吗?只是想澄清一下。。。实际上,您不希望在PHP中运行REPL(如Windows命令提示符),而是希望通过STDIO发送和接收子进程(
stockfish.exe
)的行分隔数据,对吗?是的,但什么是REPL?谢谢。我两者都同意。对我来说,重要的是获得与使用命令提示符时相同的输出。也许这有助于在一个exec命令中执行命令,请使用&&
Stockfish 10 64 by T. Romstad, M. Costalba, J. Kiiski, G. Linscott
info depth 1 seldepth 1 multipv 1 score cp 116 nodes 20 nps 10000 tbhits 0 time 2 pv e2e4
info depth 2 seldepth 2 multipv 1 score cp 112 nodes 54 nps 27000 tbhits 0 time 2 pv e2e4 b7b6
info depth 3 seldepth 3 multipv 1 score cp 148 nodes 136 nps 45333 tbhits 0 time 3 pv d2d4 d7d6 e2e4
info depth 4 seldepth 4 multipv 1 score cp 137 nodes 247 nps 61750 tbhits 0 time 4 pv d2d4 e7e6 e2e4 c7c6
bestmove d2d4 ponder e7e6