题目
众所周知,游戏都有暂停功能,请利用 fork() 函数创建父子进程,其中一个隔一秒打印一段文字(模拟运行的游戏),另外一个接收键盘的输入,并发送信号暂停与继续游戏(例如可以按 ’s’ 键暂停,按 ’c’ 键继续)。
提示:1) 自行思考父子进程中,哪个模拟游戏,哪个接收输入并发送信号。2) 自行查找发送什么信号 “暂停”,什么信号 “继续”。
源代码
#include <iostream>
#include <signal.h>
#include <unistd.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
pid_t pid = fork();
if (pid > 0) {
system("/bin/stty raw");
for (int c; c != 't'; ) {
c = getchar();
switch (c) {
case 's':
kill(pid, SIGSTOP);
break;
case 'c':
kill(pid, SIGCONT);
break;
case 't':
kill(pid, SIGTERM);
break;
}
}
system("/bin/stty cooked");
}
else if (pid == 0) {
for (;;) {
puts("The game is running.");
sleep(1);
}
}
else {
puts("Fork ERROR.");
return 1;
}
}


本文介绍了如何利用Linux编程中的fork()函数创建父子进程,一个进程模拟游戏运行,每秒打印文字,另一个进程监听键盘输入。通过键盘输入's'发送信号暂停游戏,'c'发送信号继续游戏。文章涉及信号处理和进程间的通信。
】众所周知,游戏都有暂停功能,请利用 fork 函数创建父子进程,其中一个隔一秒打印一段文字(模拟运行的游戏),另外一个接收键盘的输入,并发送信号暂停与继续游&spm=1001.2101.3001.5002&articleId=117152884&d=1&t=3&u=8ea4d694e95f44d6b52eeafff74a37e3)
1万+

被折叠的 条评论
为什么被折叠?



