Dlaczego wywołanie systemowe UNIX nosi nazwę „kill”?

41

Ciekawi mnie historia tej nazwy. Wydaje mi się, że wywołanie systemowe „zabij” mogło zostać nazwane „sygnał”, a wywołanie systemowe „sygnał” mogło zostać nazwane „uchwyt”.

Zastanawiałem się, czy pierwotnym zastosowaniem wywołania systemowego mogło być po prostu zabicie innego procesu, a jego użycie może być rozszerzone na bardziej ogólny mechanizm wysyłania sygnałów w miarę rozwoju systemu - ale to spekulacje z mojej strony.

Czy ktoś wie?

Neil Salter
źródło

Odpowiedzi:

55

Rzeczywiście pierwotnym celem sygnału było zabicie docelowego procesu. killpojawił się w 3. edycji Unix ; w tym czasie był zarezerwowany do rootowania, a proces został przymusowo zabity (jak dziś SIGKILL) i pozostawił zrzut główny.

W czwartej edycji systemu Unix dodano argument numeru sygnału, a także towarzyszące mu signalwywołanie systemowe w celu ustawienia procedury obsługi sygnału. W tym czasie wszystkie sygnały zabiły proces docelowy, chyba że proces docelowy zadzwonił ignore.

Z czasem pojawiło się coraz więcej sygnałów, z których kilka domyślnie nie zabiło procesu docelowego. Ale nazwa pozostała.

Komitet POSIX debatował nad zmianą nazwy kill, ponieważ, jak zauważasz, nie wszystkie sygnały mają na celu zakończenie procesu docelowego, ale do tego czasu było to zakorzenione historyczne użycie, więc zmiana byłaby bardziej myląca niż nie.

Gilles „SO- przestań być zły”
źródło