Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++。如何调用启动后等待标准输入的程序的命令?_C++ - Fatal编程技术网

C++。如何调用启动后等待标准输入的程序的命令?

C++。如何调用启动后等待标准输入的程序的命令?,c++,C++,我想做一个围绕stockfish国际象棋引擎的包装,该引擎使用UCI通用国际象棋界面。从码头运行的stockfish将打开其外壳: Stockfish 8 64 by T. Romstad, M. Costalba, J. Kiiski, G. Linscott | 其中I-光标 它等待输入命令,如go、position、setoption等。。。 我需要读取例如go命令的输出。 如果我想通过mysql、psql或另一个DBMS可执行文件接收select*from*连接到数据库,或者使用pyt

我想做一个围绕stockfish国际象棋引擎的包装,该引擎使用UCI通用国际象棋界面。从码头运行的stockfish将打开其外壳:

Stockfish 8 64 by T. Romstad, M. Costalba, J. Kiiski, G. Linscott
|
其中I-光标 它等待输入命令,如go、position、setoption等。。。 我需要读取例如go命令的输出。 如果我想通过mysql、psql或另一个DBMS可执行文件接收select*from*连接到数据库,或者使用python可执行文件从python命令读取一些输出,也是一样的 我正在使用linux,但跨平台解决方案更可取


我试着在while循环中使用popen和fscanf制作一个程序,但我想我需要一些非阻塞的当前线程,同时等待stdout的输出

您可以让您的程序在Linux上创建一个伪tty设备,将其连接到stockfish的标准输入和输出,并能够以这种方式控制它。stockfish认为它在终端中运行,但它的输入和输出来自您的程序。这是一个相当高级的主题,不能在关于stackoverflow的一两个简短段落中解释。如果你想实现类似的东西,你需要大量的阅读和学习。这与C++无关。@ SAMVARSHIVCHK感谢回复,我认为这是C++编程中非常常见的任务。如果您想使用便携解决方案,我建议Python的子进程模块。您可以创建另一个进程,并通过子进程的功能与之通信。还有很多东西要学,但你可以从这个链接开始。这个问题可能会有帮助:搜索是你的朋友:你可以让你的程序在Linux上创建一个伪tty设备,将它连接到stockfish的标准输入和输出,并能够以这种方式控制它。stockfish认为它在终端中运行,但它的输入和输出来自您的程序。这是一个相当高级的主题,不能在关于stackoverflow的一两个简短段落中解释。如果你想实现类似的东西,你需要大量的阅读和学习。这与C++无关。@ SAMVARSHIVCHK感谢回复,我认为这是C++编程中非常常见的任务。如果您想使用便携解决方案,我建议Python的子进程模块。您可以创建另一个进程,并通过子进程的功能与之通信。还有很多东西要学,但你可以从这个链接开始。这个问题可能会有帮助:搜索是你的朋友: