Você não pode fazer isso sem hacks desagradáveis - não há API para isso, não há como notificar o processo que seu ambiente mudou (já que isso não é realmente possível de qualquer maneira). Mesmo se você conseguir fazer isso, não há como ter certeza de que terá algum efeito - o processo poderia muito bem ter armazenado em cache a variável de ambiente que você está tentando cutucar (já que nada deveria ser capaz de alterá-lo). ).
Se você realmente quiser fazer isso e estiver preparado para pegar as peças se as coisas derem errado, você pode usar um depurador. Veja, por exemplo, esta questão do Stack Overflow:
Is Existe uma maneira de alterar as variáveis de ambiente de outro processo?
Essencialmente:
(gdb) attach process_id
(gdb) call putenv ("DISPLAY=your.new:value")
(gdb) detach
Outras funções possíveis que você pode tentar chamar são setenv
ou unsetenv
.
Por favor, lembre-se de que isto pode não funcionar, ou ter conseqüências terríveis se o processo que você direciona faz coisas "interessantes" com seu bloco de ambiente. Teste em processos não críticos primeiro, mas certifique-se de que esses processos de teste espelham o mais próximo possível daquele que você está tentando cutucar.