gpt4 book ai didi

c - 将两个程序通过管道连接在一起 C Linux

转载 作者:太空狗 更新时间:2023-10-29 11:17:14 24 4
gpt4 key购买 nike

完全公开,这是我的计算机安全类(class)介绍作业。

我们正在创建一个猜谜游戏(请参阅下面的 questioner.c),要求用户输入他们的名字,然后猜测魔数(Magic Number)。在告诉用户他们的猜测是太高、太低还是正确时,程序就会退出,就这么简单。作业的第二部分是创建一个“猜测”程序(请参阅下面的 guesser.c)来玩我们的猜谜游戏,这就是我的问题所在。提问者的输出被送入猜测者的输入,猜测者的输出被送入提问者的输入。

我在终端上试过“./questioner | ./guesser”,但程序似乎没有意识到彼此,也没有像我希望的那样一起使用 stdin 或 stdout。我觉得我缺少一些令人沮丧的基本知识,但我不知所措,非常感谢能提供的任何帮助。

提问者.c 文件:

int main(){

int magic = 2936;
char name[30];
char temp[30];
int answer;

fputs("What is your name?\n", stdout);
fgets(name, 30, stdin);

fputs("What is the magic number, test?\n", stdout);
fgets(temp, 10, stdin);

answer = strtol(temp, NULL, 0);

if(answer < magic){
fputs("TOO LOW\n", stdout);
return -1;
}
if(answer > magic){
fputs("TOO HIGH\n", stdout);
return -1;
}
if(answer == magic){
fputs("SUCCESS\n", stdout);
return 0;
}
}

guesser.c 文件:

int main(){
char input[50];

fgets(input, 50, stdin);

if(strcmp(input, "What is your name?") == 0){
fputs("AndyG\0\n", stdout);
}
else
fputs("???\0\n", stdout);

fgets(input, 50, stdin);

if(strcmp(input, "What is the magic number, AndyG?")){
fputs("2936\0\n", stdout);
}
else
fputs("???\0\n", stdout);

return 0;
}

最佳答案

Linux 中的双向管道有点棘手。最简单的方法可能是使用 FIFO,这是一个有文件名的管道。您仍然可以在一个方向上使用 | 管道:

mkfifo my_fifo
./questioner < my_fifo | ./guesser > my_fifo

关于c - 将两个程序通过管道连接在一起 C Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48254105/

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