Come può un'applicazione accedere alla variabile di ambiente impostata da un'altra applicazione?

StackOverflow https://stackoverflow.com/questions/1013383

Altri suggerimenti

Le variabili di ambiente sono ereditate dai processi figlio ma ogni figlio ne ottiene una copia: se successivamente si modifica l'ambiente del genitore, ciò non si rifletterà nel figlio.

Questo per motivi di sicurezza: se le variabili fossero condivise, i processi potrebbero vedersi nella memoria reciproca, causando ogni tipo di problema.

Quindi la soluzione è impostare la variabile prima di iniziare il nuovo processo.

Se è necessario comunicare con un processo figlio esistente, utilizzare una pipe.

Ogni applicazione viene eseguita con la propria copia dell'ambiente, quindi un processo figlio non può influenzare l'ambiente del padre. Questo vale fino in fondo a CreateProcess in cui l'ambiente è un parametro di input / facoltativo, ovvero unidirezionale.

Esistono molti meccanismi IPC disponibili dalle pipe con nome ai socket, dalla memoria condivisa ai file ... l'elenco continua.

Ma il sospetto che i file saranno i più facili per te.

È possibile che il processo figlio crei un file che contiene le coppie nome / valore desiderate che l'applicazione chiamante potrebbe quindi caricare e utilizzare. Il formato potrebbe essere qualcosa di semplice come:

chiave = valore chiave2 = valore2

un po 'più complesso (ma forse più facile da lavorare) come XML ... o qualsiasi formato personalizzato desiderato.

Il comando deve essere eseguito all'interno dell'ambiente del processo corrente. Normalmente, bash eseguirà tutti i processi come un processo figlio a cui viene data una copia di sola lettura dell'ambiente del genitore e crea una nuova voce ogni volta che viene modificata una variabile.

Il punto (.) è un comando che non deve essere confuso con le specifiche della directory corrente. Il comando punto fa eseguire il comando seguente nell'ambiente del genitore. In questo modo, le variabili d'ambiente del processo sono le variabili d'ambiente del processo chiamante.

scroll top