Tôi đang viết một thư viện nhỏ có con trỏ FILE * làm đầu vào.Thư viện của tôi có nên xử lý SIGSEGV trên đầu vào con trỏ không?
Nếu tôi ngay lập tức kiểm tra con trỏ FILE * này và tìm thấy nó dẫn đến một segfault, nó là chính xác hơn để xử lý tín hiệu, thiết lập errno, và thoát ra duyên dáng; hoặc không làm gì và sử dụng trình xử lý tín hiệu được cài đặt của người gọi, nếu anh ta có?
Sự khôn ngoan hiện tại có vẻ là "thư viện không bao giờ nên gây ra sự cố". Nhưng suy nghĩ của tôi là, vì tín hiệu đặc biệt này chắc chắn là lỗi của người gọi, nên tôi không nên cố giấu thông tin đó khỏi anh ta. Anh ta có thể có trình xử lý riêng của mình được cài đặt để phản ứng với vấn đề theo cách riêng của mình. Cùng một thông tin có thể được lấy với errno, nhưng việc định vị mặc định cho SIGSEGV được thiết lập vì một lý do chính đáng, và chuyển tín hiệu lên tôn trọng triết lý này bằng cách buộc người gọi phải xử lý lỗi của mình hoặc bằng cách đâm và bảo vệ anh ta khỏi bị hư hại thêm. .
Bạn có đồng ý với phân tích này hay bạn thấy một số lý do thuyết phục để xử lý SIGSEGV trong trường hợp này?
Thư viện chuẩn C AFAIK không xử lý sự cố bên trong, tại sao lib của bạn nên? Tuy nhiên tôi đoán nó phụ thuộc vào những gì bạn đang lập kế hoạch để làm với lib của bạn. (Làm thế nào để kiểm tra trên một FILE * dẫn đến một SIGSEV btw? Chỉ cần tò mò) – BigMike