Почему в UNIX системный вызов kill называется kill?

41

Мне любопытно узнать историю этого имени, мне кажется, что системный вызов kill мог бы называться «сигнал», а системный вызов «сигнал» мог бы называться «дескриптор».

Мне было интересно, могло ли первоначальное использование системного вызова просто убить другой процесс, и его использование, возможно, было расширено до более общего механизма отправки сигналов при разработке системы - но это предположение с моей стороны.

Кто-нибудь знает?

Нил Солтер
источник

Ответы:

55

Действительно, первоначальная цель сигнала состояла в том, чтобы убить целевой процесс. killпоявился в Unix 3rd Edition ; в то время он был зарезервирован для root, а процесс был принудительно убит (как сегодня SIGKILL) и оставил дамп ядра.

В Unix 4th edition добавлен аргумент номера сигнала, а также signalсистемный вызов компаньона для установки обработчика сигнала. В то время все сигналы уничтожали целевой процесс, если целевой процесс не был вызван ignore.

Со временем появлялось все больше и больше сигналов, некоторые из которых не убивали целевой процесс по умолчанию. Но имя осталось.

Комитет POSIX обсуждал переименование kill, потому что , как вы заметили , не все сигналы предназначены для завершения целевого процесса, но это было закреплено историческим использование на тот момент, так что изменение это было бы более запутанным , чем нет.

Жиль "ТАК - перестань быть злым"
источник