簡體   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