繁体   English   中英

如何在不结束C ++程序的情况下结束ncurses?

[英]How can I end ncurses without ending the C++ program?

我一直在尝试制作一个ncurses程序,它将在某一点结束ncurses模式,并在正常的终端模式下恢复,但仍然保持程序运行。 可能吗? endwin(); 结束程序。 这是我的代码(不要担心功能,我之前做过):

clear();
refresh();
endwin();
boxmessage("STEP 1");
consolewrite("Removing Popularity Contest...");
std::vector<std::string> removepak;
removepak.push_back("popularity-contest");
removepackages(removepak);

endwin()不会终止你的程序; 别的东西必须这样做。

这个程序在我的系统上正常工作(Ubuntu 11.04,g ++ 4.5.2):

#include <curses.h>
#include <unistd.h>
#include <iostream>
int main() {
    initscr();
    mvaddstr(10, 10, "Hello, world");
    refresh();
    sleep(4);
    endwin();
    std::cout << "DONE\n";
}

它清除屏幕,在预期位置打印“Hello,world”,睡眠4秒,然后恢复屏幕并打印“DONE”。

正如在评论中提到的,如果boxmessage()使用ncurses,那么在调用endwin()之后它就无法工作。

尝试在创建和写入文件的endwin()之后添加一些代码,只是为了验证您的程序是否在那里死亡。

更新 (近16个月后),引用OP的最新评论:

好的,我发现了这个bug。 这只是因为我制作了一系列按钮,然后我做了'case:x'部分,我只是没有写出正确调用函数的整数。 感谢您的帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM