Когда-то давно, году в 2003, изучая Linux и UNIX, я усвоил концепцию "в UNIX всё - либо процесс, либо файл/дескриптор". Хотя это оказалось не так в общем случае, всё равно, мантра показалась интересной. Потом я добрался до сигналов и ужаснулся сложности их бытия. Но более того: мне практически сразу пришло на ум то, что сигнал - очень ненадёжное средство общения между процессами. Главным образом потому, что посылая сигнал процессу, нельзя быть уверенным в том, что сигнал получит нужный процесс - он ведь может завершиться, а на его месте возникнуть другой новый процесс с таким же идентификатором.
Оказывается (да, я тормоз), в ядре Linux 5.2 эту проблему
пофиксили (в 2019-м году), введя так называемые pidfd - файловые дескритпоры процессов. Теперь мантра "в UNIX всё - либо процесс, либо файл/дескриптор" превратилась в "в Linux всё - файл/дескриптор", что тоже впрочем не так на 100%.
Осталось превнести файловые дескрипторы в концепцию futex (по-моему, возмутительно, что этого до сих пор нет) и тогда, может быть, наступит счастье )
Только по моим часам на это ушло 16 лет, а так-то проблема с древних времен сидела в дизайне системы. С одной стороны приятно смотреть как нечто эволюционирует, избавляется от старых травм и становится лучше. С другой стороны, грустно наблюдать, как Linux всё более отдаляется от своих BSD-lilke братьев, застывших в граните, и код становится всё менее и менее портабельным на другие платформы.