Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [Hệ điều hành Unix] Phát hiện leak trong vòng lặp

    Phát hiện leak trong vòng lặp

    Một lỗi phổ biến: trong vòng lặp, mỗi vòng open một file nhưng không phải vòng nào cũng close. Sau nhiều vòng, fd tích lũy và có thể vượt giới hạn LIMIT → EMFILE.

    Mô phỏng R vòng lặp; mỗi vòng có một mẫu thao tác lặp lại (open/close-last). close-last đóng fd vừa mở gần nhất còn mở (nếu có). Bắt đầu 0 1 2. Nếu số fd mở vượt quá LIMIT tại bất kỳ thời điểm nào, in EMFILE kèm số vòng (1-based) xảy ra; ngược lại in số fd mở cuối.

    Ví dụ I/O: LIMIT 5, mỗi vòng chỉ open, 3 vòng → vòng 3 chạm 6 > 5 → EMFILE 3.

    • Định dạng đầu vào:

      Dòng 1: LIMIT. Dòng 2: số vòng R. Dòng 3: số thao tác mỗi vòng t. t dòng open hoặc close-last.

    • Ràng buộc đầu vào:

      0 ≤ R ≤ 1000; t ≤ 10.

    • Định dạng đầu ra:

      Nếu leak vượt LIMIT: in EMFILE <vòng>. Ngược lại in số fd mở cuối.

    Ví dụ:

    Đầu vào:

    5
    3
    1
    open
    

    Đầu ra:

    EMFILE 3

    Giải thích:

    Mỗi vòng open thêm 1 fd, không close. Vòng 3 đạt 6 fd > LIMIT 5 → EMFILE ở vòng 3.

    Đang tải editor...