Tôi đoán câu hỏi sẽ nói tất cả, nhưng, điều gì xảy ra nếu ai đó đóng ứng dụng bảng điều khiển C++? Như trong, nhấp vào "x" ở góc trên cùng. Nó có đóng ngay lập tức không? Nó có ném một loại ngoại lệ nào đó không? Đó là hành vi không xác định?Điều gì sẽ xảy ra khi bạn đóng ứng dụng bảng điều khiển C++
Trả lời
Đóng ứng dụng bảng điều khiển C++ bằng dấu "x" ở góc trên cùng để ném CTRL_CLOSE_EVENT
mà bạn có thể nắm bắt và xử lý nếu bạn đặt trình xử lý điều khiển bằng chức năng SetConsoleCtrlHandler. Trong đó bạn có thể ghi đè lên các chức năng đóng và thực hiện bất cứ điều gì bạn muốn làm, và sau đó tùy chọn vẫn thực hiện các hành vi mặc định.
Bạn không thể ghi đè đóng bảng điều khiển. Quá trình thoát cho dù bạn trả về 'TRUE' hoặc' FALSE'. Thay vào đó, nếu bạn trì hoãn hoặc trả lại, ví dụ: để làm sạch, bạn được đưa ra 5 giây theo mặc định trước khi quá trình của bạn bị giết. Nó giống nhau ngay cả khi bạn tự gọi là 'AllocConsole' hoặc' AttachConsole', và đã quá muộn để gọi 'FreeConsole' trong trình xử lý. Nếu người dùng đóng giao diện điều khiển không nên chấm dứt quá trình chính, thì bạn cần phải sử dụng một tiến trình con cho bảng điều khiển và kết nối I/O tiêu chuẩn với các đường ống. – eryksun
Tôi tưởng tượng rằng quá trình giao diện điều khiển chỉ bị hệ điều hành vô tình giết chết. Nếu bạn muốn bẫy sự kiện này và làm một cái gì đó có vẻ như các chức năng SetConsoleCtrlHandler là cách để làm điều đó.
Xem thêm:
Trên Linux và các hệ thống Unix khác, giao diện điều khiển chạy như một quá trình riêng biệt. Khi bạn đóng trình bao, nó sẽ gửi tín hiệu SIGHUP tới tiến trình hiện đang hoạt động hoặc các tiến trình không được thực hiện trong nền. Nếu lập trình viên không xử lý nó, quá trình này chỉ đơn giản là chấm dứt. Tín hiệu tương tự được gửi nếu bạn đóng phiên SSH với một thiết bị đầu cuối và một quá trình hoạt động.
SIGBREAK
được nâng lên trên Windows.
Điều này không cung cấp câu trả lời cho câu hỏi. Để phê bình hoặc yêu cầu làm rõ từ tác giả, hãy để lại nhận xét bên dưới bài đăng của họ. – DLeh
Chắc chắn rồi. Đó là câu trả lời tôi muốn khi tôi tìm thấy trang này. – slater
'SIGBREAK' chỉ được nâng lên nếu bạn đang sử dụng thời gian chạy C. Bản thân Windows không có tín hiệu Unix. Thời gian chạy C có trình điều khiển điều khiển bàn điều khiển ánh xạ 'CTRL_C_EVENT' thành' SIGINT' và tất cả các sự kiện điều khiển khác thành 'SIGBREAK'. – eryksun
- 1. Điều gì sẽ xảy ra nếu tôi không đóng System.Diagnostics.Process trong ứng dụng giao diện điều khiển C# của tôi?
- 2. Điều gì sẽ xảy ra khi ném ngoại lệ C++?
- 3. Điều gì xảy ra khi tôi ngắt một ứng dụng giao diện điều khiển C# bằng Control-C?
- 4. Điều gì sẽ xảy ra khi tôi biên dịch?
- 5. Điều gì sẽ xảy ra sau khi gói bị bắt?
- 6. Điều gì sẽ xảy ra khi bạn gọi một phương thức tĩnh trong C#?
- 7. Điều gì sẽ xảy ra khi bạn đóng tệp bằng mã hóa Được bảo vệ trừ khi mở 'của iOS?
- 8. điều gì sẽ xảy ra nếu bạn sử dụng attribute_to mà không có has_one tương ứng?
- 9. điều gì sẽ xảy ra trong scala khi tải các đối tượng mở rộng ứng dụng?
- 10. Sử dụng pin, điều gì sẽ xảy ra?
- 11. Điều gì sẽ xảy ra khi Stack và Heap Collide
- 12. Điều gì sẽ xảy ra khi mongodb hết bộ nhớ?
- 13. Điều gì sẽ xảy ra khi cài đặt lại nhóm ứng dụng?
- 14. Điều gì sẽ xảy ra với cửa sổ WPF sau khi đóng?
- 15. Dừng ứng dụng bảng điều khiển .net bị đóng
- 16. Điều gì sẽ xảy ra khi kết nối với MongoDB không bị đóng?
- 17. Điều gì sẽ xảy ra khi va chạm băm xảy ra trong khóa Từ điển?
- 18. Điều gì sẽ xảy ra với cơ sở dữ liệu Sqlite khi ứng dụng bị xóa
- 19. Điều gì tạo ra ứng dụng Bảng điều khiển ứng dụng hoặc Windows Form?
- 20. Điều gì sẽ xảy ra với con trỏ FILE sau khi tệp được đóng?
- 21. điều gì sẽ xảy ra khi bạn nhập những thứ như 12ab vào scanf ("% d", & argu)?
- 22. Điều gì sẽ xảy ra khi bạn sử dụng wiki của riêng mình bằng C# và sql?
- 23. Điều gì sẽ xảy ra nếu khung bị xóa khỏi ứng dụng?
- 24. Làm cách nào để ngăn cửa sổ bảng điều khiển đóng khi chạy ứng dụng bảng điều khiển?
- 25. Trong Java, điều gì sẽ xảy ra nếu bạn sử dụng Double.NaN trong một hoạt động?
- 26. Điều gì sẽ xảy ra với AsyncTasks sau onPause?
- 27. Điều gì sẽ xảy ra nếu tôi không đóng cơ sở dữ liệu trong Android?
- 28. Điều gì sẽ xảy ra nếu tôi ReleaseMutex() hai lần?
- 29. Điều gì đang xảy ra khi sử dụng DISTINCT?
- 30. Nếu không xóa biến ThreadLocal, Điều gì sẽ xảy ra?
Bạn quan tâm đến nền tảng nào? Các cửa sổ? Linux? Điều đó thực sự ảnh hưởng đến câu trả lời. –
Việc sử dụng cụm từ "ứng dụng giao diện điều khiển" ngụ ý các cửa sổ, vì đó là thuật ngữ MS cho các ứng dụng chế độ ký tự. – AndrewR