2011-12-04 41 views
6

Tôi đã cố gắng thực hiện một chương trình ncurses sẽ kết thúc chế độ ncurses tại một điểm nhất định và tiếp tục ở chế độ đầu cuối bình thường, nhưng vẫn giữ chương trình đang chạy. Có thể không? endwin(); kết thúc chương trình. Đây là mã của tôi (đừng lo lắng về chức năng, tôi làm cho họ trước đó):Làm thế nào tôi có thể kết thúc ncurses mà không kết thúc chương trình C++?

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

Tôi chưa bao giờ sử dụng NCurses trước đây, nhưng bạn đã thử gọi tệp thi hành từ dòng lệnh chưa? – Bojangles

+0

Vâng, tôi đã thử làm điều đó (đó là cách tôi luôn làm điều đó). – MiJyn

+0

Tôi đã không thực hiện đủ lời nguyền để biết điều này dễ dàng như thế nào, nhưng một con đường thay thế có thể sẽ ở lại * trong * ncurses, nhưng đơn giản bao gồm toàn bộ thiết bị đầu cuối với một cửa sổ giống như dòng thiết bị đầu cuối sự tương tác. – dmckee

Trả lời

4

endwin() không được chấm dứt chương trình của bạn; một cái gì đó khác phải làm như vậy.

chương trình này hoạt động một cách chính xác trên hệ thống của tôi (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"; 
} 

Nó xóa màn hình, bản in "Hello, world" ở vị trí dự kiến, ngủ trong vòng 4 giây, sau đó khôi phục màn hình và in "XONG".

Như đã đề cập trong nhận xét, nếu boxmessage() sử dụng ncurses, nó sẽ không hoạt động sau khi bạn gọi endwin().

Hãy thử thêm một số mã sau endwin() tạo và ghi vào tệp, chỉ để xác minh rằng chương trình của bạn không chết ngay tại đó.

Cập nhật (sau gần 16 tháng), trích dẫn lời nhận xét gần đây nhất của OP:

OK, tôi đã tìm thấy lỗi. Đó là vì tôi đã tạo một loạt các nút, sau đó tôi đã thực hiện phần 'case: x' và tôi không viết số nguyên gọi hàm đó một cách chính xác. Cảm ơn bạn đã cố gắng để giúp đỡ!

Các vấn đề liên quan