【发布时间】:2022-12-03 09:47:04
【问题描述】:
我不明白为什么在 WINDOW 中分叉后箭头键代码会发生变化。 向上箭头返回 259,但在分叉之后返回 65。 如果我在 stdscr 上运行相同的程序,它会在开头返回 65。 感谢您的帮助,对英语(由谷歌翻译)感到抱歉。
`
#include <curses.h>
#include <sys/ioctl.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdlib.h>
void openVim() {
pid_t pid = fork();
if (pid < 0) {}
else if (pid == 0) {
execl("/usr/bin/vim", "/usr/bin/vim", NULL);
exit(0);
}
else {
wait(NULL);
}
}
int main() {
initscr();
noecho();
int ch = 0;
WINDOW* mainWin = newwin(10,10,0,0);
keypad(mainWin, TRUE);
while ((ch = wgetch(mainWin)) != 'q') {
wclear(mainWin);
if (ch == 'V') openVim();
else
mvwprintw(mainWin, 0, 0, "%i - %c", ch, ch);
wrefresh(mainWin);
}
delwin(mainWin);
endwin();
return 0;
}
`
我注意到如果我在 fork 中放置一个简单的 for 循环,它就不会发生。它可能与execl有关?
【问题讨论】: