Parece-me que você está tentando substituir um processo RUNNING de FORA do processo. Isso é algo radical.
Quando olhei pela primeira vez para a pergunta, parece que você está procurando exatamente por exec
. Mas exec
é chamado pelo próprio programa. Então, a menos que você tenha codificado o processo para que você possa forçá-lo a apenas executar outro processo, você não poderá fazer isso enquanto estiver sendo executado.
Você poderia criar uma interceptação de sinal em seu Programa-A para exec
um programa com nome predefinido (que você pode definir como desejar) e, em seguida, usar kill
nesse processo para forçá-lo a% código%. Do lado de fora, parecerá que o processo continuou rodando - acontece, apenas se torna outra pessoa. No entanto, se você não tiver feito isso e quiser fazer isso em um processo em execução, não acredito que possa fazer nada.
No entanto, se o shell externo estiver em execução, mas ainda não iniciou o processo crítico, você pode simplesmente substituir o arquivo do processo problemático.