Учитывая, что я не понимаю, что на самом деле запрашивается, и я, конечно, смотрю на такие вещи, как «execve» с выражением «кто, черт возьми, когда-либо это так называет, ничто, кроме безумия не может когда-либо привести к этому», я все же смотрю на эта проблема, задавая себе вопрос:
если процесс-а был убит и заменен почти идентичным процессом-б - кто или что заметит?
Все, что содержит идентификатор процесса или дескриптор процесса, наверняка заметит. Это можно сделать, написав приложение-оболочку, которое загружает первый процесс узла, а при добавлении убивает его и загружает следующий. Внешние наблюдатели видят дескрипторы процесса упаковки и идентификатор не изменяется.
Очевидно, что это отрезало бы потоки stdin и stdout, подаваемые в приложения узла. Но опять же, процесс-обертка мог бы обойти это, передавая один и тот же набор наследуемых дескрипторов каждому процессу, запущенному узлом, путем правильного заполнения структуры STARTUPINFO
, переданной в CreateProcess
.
Windows не поддерживает сигналы, а те, которые во время фальшивой среды выполнения MS C имеют дело с внутренними ошибками, кроме одной, которая связана с закрытием окна интерактивной консоли с помощью ctrl-C, в чем уверено активное приложение Node.js в любом случае - или может быть передан из оболочки, так как при таком подходе приложения узла не будут работать на интерактивной консоли.
Кроме того, все остальное, по-видимому, является внутренней деталью приложения Node.js, поэтому не должно влиять на любое стороннее приложение, взаимодействующее с тем, что оно считает приложением с одним узлом, через свои потоки stdin / stdout.