2012-01-31 41 views
10

Tôi có một ứng dụng sử dụng thư viện libuv. nó chạy vòng lặp mặc định:libuv: làm thế nào để thoát khỏi ứng dụng một cách duyên dáng trên một lỗi?

uv_run(uv_default_loop()); 

Làm cách nào để ứng dụng có thể thoát ra khỏi trường hợp thất bại? Hiện tại tôi đang làm như trong ví dụ sau:

uv_tcp_t* tcp = malloc(sizeof(uv_tcp_t)); 
int r = uv_tcp_init(uv_default_loop(), tcp); 

if (r) { 
    free(tcp); 
    uv_loop_delete(default_loop); 
    exit(EXIT_FAILURE); 
} 

Nên gọi hàm uv_loop_delete? Nó làm gì? Nó có bỏ tất cả các chức năng gọi lại đang chờ xử lý không? Nó có đóng tất cả các kết nối TCP hiện đang mở không? Tôi có phải làm thủ công trước khi thoát không?

P.S .: Không thể thêm thẻ 'libuv' (ít hơn 1500 danh tiếng). Ai đó có thể tạo và thêm nó?

+0

Vui lòng chỉnh sửa mô tả của libuv, tôi không chắc chắn 100% ý nghĩa của libuv. –

+0

cảm ơn! đã chỉnh sửa. bạn có thể xem lại không? –

+0

Không thể nhìn thấy nó ở đây http://stackoverflow.com/tags/libuv/info –

Trả lời

4

Tuyên bố của uv_loop_delete là here và mã nguồn là here. Có vẻ như sau:

void uv_loop_delete(uv_loop_t* loop) { 
    uv_ares_destroy(loop, loop->channel); 
    ev_loop_destroy(loop->ev); 
#if __linux__ 
    if (loop->inotify_fd == -1) return; 
    ev_io_stop(loop->ev, &loop->inotify_read_watcher); 
    close(loop->inotify_fd); 
    loop->inotify_fd = -1; 
#endif 
#if HAVE_PORTS_FS 
    if (loop->fs_fd != -1) 
    close(loop->fs_fd); 
#endif 
} 

Làm sạch, hiệu quả mọi bộ mô tả tệp có thể làm sạch. Nó sẽ đóng kết nối TCP, kết nối Inotify, Socket được sử dụng để đọc các sự kiện, Fds ống, v.v.

=> Có, chức năng này sẽ đóng mọi thứ bạn đã mở thông qua libuv.

NB: Dù sao, khi ứng dụng của bạn thoát, Hệ điều hành của bạn sẽ làm sạch và đóng mọi thứ bạn đã mở, mà không có bất kỳ sự thương xót nào.

+0

Âm thanh hợp lý. Hệ điều hành sẽ giải phóng tất cả các tài nguyên.Cảm ơn Coren –

+0

Câu trả lời này vẫn áp dụng cho các bản phát hành 1.x và hơn thế nữa không? – Dave

+0

@dave yes. Uv_loop_delete hiện gọi là uv_loop_close. , điểm vào chính để đóng mọi thứ. – Coren

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