gpt4 book ai didi

c++ - 有双向管道之类的东西吗?我希望输入和输出在两个简单程序之间交互

转载 作者:太空狗 更新时间:2023-10-29 20:28:09 25 4
gpt4 key购买 nike

我想编写一个程序来解决一个简单的猜谜游戏。我正在学习命令行管道和重定向,所以我想知道这是否可能。

基本上我希望一个的输出是另一个的输入,然后另一个的输出是另一个的输入。

这只是为了好玩,所以我可以学习,我知道我可以更改猜谜游戏的源代码并包含求解算法,但为了好玩,让我们假设我没有源代码。

这可能吗?这是我的代码:

//GuessingGame.cc    

#include <cstdlib>
#include <iostream>

using namespace std;

int main() {
srand(time(NULL));
int number = rand()%100;
int guess = -1;
int trycount = 0;

while(guess != number && trycount < 8) {

cout << "Please enter a guess: ";
cin >> guess;

if(guess < number)
cout << "Too low" << endl;

else if(guess > number)
cout << "Too high" << endl;

trycount++;
}

if(guess == number)
cout << "You guessed the number!";

else
cout << "Sorry, the number was: " << number;

return 0;
}

Solver.cc

#include <iostream>
#include <fstream>

using namespace std;

int main(int argc, char* argv[]) {

string prompt;
int high = 100;
int low = 0;
int guess = 50;

getline(cin,prompt);
if(prompt == "Please enter a guess: ")
cout << guess;

while(true) {
getline(cin,prompt);
if(prompt == "Too low")
low = guess;

else if(prompt == "Too high")
high = guess;

else if(prompt == "You guessed the number!")
return 0;

guess = (low+high)/2;
cout << guess;
}
}

我希望你明白我在做什么,我对程序并没有那么在意,它只是一个例子。主要问题是您是否可以使用重定向和管道等与两个不同的程序进行交互。谢谢

最佳答案

根据定义,管道是一种单向通信设备。然而,它可以通过使用两根管道来解决,每个方向一根。问题是它不能通过 shell 轻松完成,您必须制作一个程序来设置管道,为您的程序创建进程,然后将管道设置为正确的输入/输出 channel 来执行它们。

我能想到如何通过 shell 实现这一点的唯一方法是使用 mkfifo命令创建两个管道。在后台启动一个程序,将输入和输出从/重定向到正确的管道,然后对另一个程序执行相同的操作,但使用另一个管道作为输入和输出。

关于c++ - 有双向管道之类的东西吗?我希望输入和输出在两个简单程序之间交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14044241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com