Warum heißt der UNIX-Systemaufruf kill 'kill'?

41

Ich bin neugierig auf die Geschichte des Namens, es scheint mir, dass der Systemaufruf 'kill' als 'signal' und der Systemaufruf 'signal' als 'handle' bezeichnet werden könnte.

Ich habe mich gefragt, ob die ursprüngliche Verwendung des Systemaufrufs möglicherweise einfach darin bestand, einen anderen Prozess zu beenden, und seine Verwendung wurde im Zuge der Entwicklung des Systems möglicherweise auf einen allgemeineren Signalübertragungsmechanismus ausgeweitet - aber das sind Spekulationen von meiner Seite.

Weiß jemand?

Neil Salter
quelle

Antworten:

55

In der Tat bestand der ursprüngliche Zweck eines Signals darin, den Zielprozess abzubrechen. killerschien in Unix 3rd Edition ; Zu dieser Zeit war es Root vorbehalten und der Prozess wurde gewaltsam abgebrochen (wie heute SIGKILL) und hinterließ einen Core-Dump.

Unix 4th Edition fügte ein Signalnummernargument sowie den Companion signal-Systemaufruf zum Festlegen eines Signalhandlers hinzu. Zu diesem Zeitpunkt haben alle Signale den Zielprozess beendet, es sei denn, der Zielprozess hat aufgerufen ignore.

Mit der Zeit erschienen immer mehr Signale, von denen einige den Zielprozess nicht standardmäßig abbrachen. Aber der Name blieb.

Das POSIX-Komitee debattierte über die Umbenennung kill, da nicht alle Signale den Zielprozess beenden sollen, dies jedoch zu diesem Zeitpunkt in der Vergangenheit verankert war. Eine Änderung wäre daher verwirrender gewesen als nicht.

Gilles 'SO - hör auf böse zu sein'
quelle