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] Số tín hiệu xử lý được trước khi bị diệt

    Số tín hiệu xử lý được trước khi bị diệt

    Một tiến trình cài handler cho một tập tín hiệu (đếm là "xử lý được"). Tiến trình nhận một luồng tín hiệu lặp lại: cho mẫu gồm m số hiệu, luồng là mẫu đó lặp vô hạn. Tiến trình xử lý từng tín hiệu:

    • Nếu tín hiệu nằm trong tập có handler và không phải 9/19 → được xử lý (đếm +1), tiếp tục.
    • Nếu không có handler (kể cả 9/19 luôn không thể có handler) → dùng mặc định; nếu hành động mặc định là Term/Core → tiến trình bị diệt ngay (không đếm tín hiệu này là xử lý), dừng. Nếu mặc định là Ign/Stop/Cont → coi như sống sót và được tính là xử lý (đếm +1), tiếp tục.

    In số tín hiệu đã xử lý trước khi bị diệt. Nếu luồng lặp vô hạn mà KHÔNG bao giờ bị diệt (mọi tín hiệu trong mẫu đều xử lý được), in INFINITE.

    Số hiệu Tên Hành động mặc định
    1 SIGHUP Term
    2 SIGINT Term
    3 SIGQUIT Core
    9 SIGKILL Term
    10 SIGUSR1 Term
    11 SIGSEGV Core
    12 SIGUSR2 Term
    13 SIGPIPE Term
    14 SIGALRM Term
    15 SIGTERM Term
    17 SIGCHLD Ign
    18 SIGCONT Cont
    19 SIGSTOP Stop
    20 SIGTSTP Stop

    Ví dụ

    Xem test mẫu.

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

      Dòng 1: các số hiệu mà tiến trình có handler (có thể rỗng). Dòng 2: mẫu gồm các số hiệu (m ≥ 1).

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

      m ≤ 1000. Số handler ≤ 50.

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

      Số tín hiệu đã xử lý trước khi bị diệt, hoặc INFINITE.

    Ví dụ:

    Đầu vào:

    2 15
    2 15 9
    

    Đầu ra:

    2

    Giải thích:

    2 và 15 có handler → xử lý (đếm 2). Tới 9 (SIGKILL) không thể có handler, mặc định Term → bị diệt. Xử lý được 2 tín hiệu.

    Đang tải editor...