Tôi đang làm việc trên một chương trình sử dụng bộ nhớ dùng chung. Nhiều phiên bản của chương trình đã nói sẽ kết nối với một chương trình hiện có hoặc tạo lại nó và cung cấp lại cho hệ điều hành khi không có quy trình nào khác hoặc chỉ tách nó ra và chấm dứt. Tôi đã nghĩ đến việc sử dụng một bộ đếm đơn giản để theo dõi xem có bao nhiêu quá trình sử dụng nó.Làm thế nào để làm sạch sau SIGKILL?
Tôi đang sử dụng chức năng atexit()
để làm sạch, tuy nhiên, khi nhận tín hiệu SIGKILL, quy trình sẽ không thực hiện bất kỳ việc dọn dẹp nào, vì vậy nếu bất kỳ quy trình nào không kết thúc bình thường, tôi có thể không bao giờ có thể làm sạch bộ nhớ.
Có cách nào để chỉ định việc cần làm ngay cả sau khi có tín hiệu SIGKILL không? Tôi có lẽ sẽ viết một số cơ chế tương tự như một bộ đếm thời gian để kiểm tra xem các quá trình vẫn còn sống, nhưng tôi thực sự muốn tránh nó nếu có một cách khác.
+1 để giải thích khái niệm – Robert