Я пытаюсь увидеть, что происходит, когда я пытаюсь убить процесс kernel_task . Поскольку kill -9 pid является командой для принудительного выхода из процесса, а pid kernel_task равен 0, я просто запустил kill -9 0 .
Вместо получения Permission Denied или Operation not permitted при уничтожении корневого процесса, вы просто получаете следующее:
Last login: Thu Jun 18 16:55:10 on ttys005
MacBook-Air:~ james$ kill -9 0
[Process completed]
... что странно, потому что попытка убить launchd (на один уровень ниже kernel_task) дает вам следующее:
-bash: kill: (1) - Operation not permitted
и все остальные корневые процессы.
Почему, черт возьми, он просто завершает процесс, который вызвал команду, вместо того, чтобы отправлять Operation not permitted , как все другие корневые процессы?
Бонусные баллы, если вы можете сказать мне ответ на этот вопрос: если вы создаете скрипт, который пытается убить kernel_task (и игнорирует SIGTERM), при запуске он выдаст Killed: 9 и вернется к bash. Почему он помещает это в стандартный вывод, когда убивает его? Почему не что-то более наглядное?
