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] Thống kê tín hiệu kết thúc tiến trình con

    Thống kê tín hiệu kết thúc tiến trình con

    Một tiến trình cha thu hoạch (reap) nhiều tiến trình con và ghi lại các giá trị status thô (quy ước Linux như bài WIFSIGNALED). Hãy thống kê: với mỗi tên tín hiệu đã kết thúc ít nhất một con, in <tên> <số_lần>, sắp xếp theo số hiệu tín hiệu tăng dần. Bỏ qua các con thoát bình thường.

    Cuối cùng in một dòng EXITED <k> với k là số con thoát bình thường.

    • Con bị tín hiệu kết thúc: status & 0x7f != 0, signum = status & 0x7f. Nếu signum không có trong bảng, dùng tên SIG<num>.
    • Con thoát bình thường: status & 0x7f == 0.
    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:

      Một dòng các giá trị status cách nhau bởi dấu cách (có thể rỗng).

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

      Số status ≤ 1000. 0 ≤ status ≤ 65535.

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

      Các dòng <tên> <số_lần> (theo số hiệu tăng dần), rồi EXITED <k>.

    Ví dụ:

    Đầu vào:

    9 9 15 256 11
    

    Đầu ra:

    SIGKILL 2
    SIGSEGV 1
    SIGTERM 1
    EXITED 1

    Giải thích:

    status 9,9→SIGKILL x2; 11→SIGSEGV; 15→SIGTERM; 256 (low=0)→thoát bình thường. Sắp theo số hiệu tăng dần: 9,11,15.

    Đang tải editor...