Tại sao lệnh gọi hệ thống UNIX có tên là 'kill'?


41

Tôi tò mò về lịch sử của cái tên, đối với tôi, cuộc gọi hệ thống 'giết' có thể được đặt tên là 'tín hiệu' và cuộc gọi hệ thống 'tín hiệu' có thể được đặt tên là 'xử lý'.

Tôi đã tự hỏi liệu việc sử dụng ban đầu của cuộc gọi hệ thống có thể chỉ đơn giản là để giết một quá trình khác hay không, và việc sử dụng nó có lẽ được mở rộng sang một cơ chế gửi tín hiệu chung hơn khi hệ thống phát triển - nhưng đây là suy đoán của tôi.

Có ai biết không?

Câu trả lời:


55

Thật vậy, mục đích ban đầu của tín hiệu là tiêu diệt quá trình mục tiêu. killxuất hiện trong phiên bản thứ 3 Unix ; tại thời điểm đó, nó được dành riêng cho root và quá trình này đã bị giết chết (như SIGKILL ngày nay) và để lại một bãi rác cốt lõi.

Phiên bản thứ 4 của Unix đã thêm một đối số số tín hiệu, cũng như signallệnh gọi hệ thống đồng hành để đặt bộ xử lý tín hiệu. Vào thời điểm đó, tất cả các tín hiệu đã giết chết quá trình đích trừ khi quá trình đích đã được gọi ignore.

Theo thời gian, ngày càng có nhiều tín hiệu xuất hiện, một vài trong số đó không giết được quá trình đích theo mặc định. Nhưng tên vẫn còn.

Các ủy ban POSIX tranh luận đổi tên kill, bởi vì khi bạn lưu ý không phải tất cả các tín hiệu nhằm chấm dứt quá trình mục tiêu, nhưng điều này đã được cố thủ sử dụng lịch sử bởi thời điểm đó, do đó thay đổi nó sẽ bị bối rối hơn không.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.