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] WIFSIGNALED và WTERMSIG

    WIFSIGNALED và WTERMSIG

    Hàm waitpid trả về một giá trị trạng thái thô (raw status). Theo quy ước Linux:

    • Nếu tiến trình con bị tín hiệu kết thúc: 7 bit thấp (status & 0x7f) khác 0 và khác 0x7f. Khi đó WIFSIGNALED đúng và WTERMSIG = status & 0x7f.
    • Nếu tiến trình thoát bình thường: status & 0x7f == 0, mã thoát là (status >> 8) & 0xff.

    Cho một giá trị status, nếu con bị tín hiệu kết thúc, in SIGNALED <signum>; nếu thoát bình thường in EXITED <code>.

    Ví dụ

    Vào: 9 → Ra: SIGNALED 9 (status=9: bị SIGKILL).

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

      Một dòng chứa số nguyên status.

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

      0 ≤ status ≤ 65535.

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

      SIGNALED <signum> hoặc EXITED <code>.

    Ví dụ:

    Đầu vào:

    9
    

    Đầu ra:

    SIGNALED 9

    Giải thích:

    status=9: 7 bit thấp = 9 ≠ 0 → con bị tín hiệu 9 (SIGKILL) kết thúc.

    Đang tải editor...