gpt4 book ai didi

c++ - 多进程如何使用同一个ncurses屏幕?

转载 作者:行者123 更新时间:2023-11-28 05:26:38 26 4
gpt4 key购买 nike

我正在用 ncurses 编写一个 c++ 多进程程序。

每个进程都需要在屏幕上显示一些东西。

我的示例代码:

int main() {
initscr();
noecho();
curs_set(0);

int flag = fork();
if (flag == -1)
exit(1);
else if (flag == 0) {
WINDOW *win = newwin(4, 4, 0, 0);
int n = 0;
while (1) {
mvwprintw(win, 0, 0, "%d", n % 9);
wrefresh(win);
n = (n + 1) % 9;
sleep(1);
}
}
else {
WINDOW *win = newwin(4, 4, 8, 8);
int n = 0;
while (1) {
mvwprintw(win, 0, 0, "%d", n % 9);
wrefresh(win);
n = (n + 1) % 9;
sleep(1);
}
}
endwin();

return 0;
}

但它只能在屏幕上显示一个进程的信息。

我该如何解决?

最佳答案

我破解了一些丑陋的东西,但大致可以工作,但显示了问题所在。我怀疑与其他进程通信的单个窗口管理器进程会更好 - 或者一些可怕的互斥锁集。

#include <stdlib.h>
#include <unistd.h>
#include <curses.h>
int main() {
initscr();
noecho();
curs_set(0);
WINDOW *win0 = newwin(4, 4, 0, 0);
WINDOW *win1 = newwin(4, 4, 8, 8);

int flag = fork();
if (flag == -1)
exit(1);
else if (flag == 0) {
int n = 0;
while (1) {
mvwprintw(win0, 0, 0, "%d", n % 9);
wrefresh(win0);
wrefresh(win1);
n = (n + 1) % 9;
sleep(1);
}
}
else {
int n = 0;
while (1) {
mvwprintw(win1, 0, 0, "%d", n % 9);
wrefresh(win1);
wrefresh(win0);
n = (n + 1) % 9;
sleep(1);
}
}
endwin();

return 0;
}

enter image description here

关于c++ - 多进程如何使用同一个ncurses屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40435644/

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