GNU/Linux >> Tutoriels Linux >  >> Linux

Linux - Modifier /proc/pid/environ après le démarrage du processus ?

$ k=v p &
[1] 3028

y a-t-il un moyen pour p pour modifier le contenu de /proc/3028/environ ne pas mentionner k=v pendant p est toujours en cours d'exécution ?

Réponse acceptée :

Sous Linux, vous pouvez écraser la valeur des chaînes d'environnement sur la pile.

Vous pouvez donc masquer l'entrée en l'écrasant avec des zéros ou autre :

#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char* argv[], char* envp[]) {
  char cmd[100];

  while (*envp) {
    if (strncmp(*envp, "k=", 2) == 0)
      memset(*envp, 0, strlen(*envp));

    envp++;
  }

  sprintf(cmd, "cat /proc/%u/environ", getpid());

  system(cmd);
  return 0;
}

Exécuter en tant que :

$ env -i a=foo k=v b=bar ./wipe-env | hd
00000000  61 3d 66 6f 6f 00 00 00  00 00 62 3d 62 61 72 00  |a=foo.....b=bar.|
00000010

le k=v a été remplacé par

Linux
  1. Comment Linux gère-t-il plusieurs séparateurs de chemins consécutifs (/home////nom d'utilisateur///fichier) ?

  2. Comment obtenir le chemin d'un processus sous Unix / Linux

  3. /proc/[pid]/pagemaps et /proc/[pid]/maps | linux

  4. Comment savoir à partir de quel dossier un processus est en cours d'exécution ?

  5. Comment lire depuis /proc/$pid/mem sous Linux ?

Un guide pour le système de fichiers ‘/proc’ sous Linux

Fichiers /proc/cpuinfo et /proc/meminfo sous Linux

Comprendre les fichiers /proc/mounts, /etc/mtab et /proc/partitions

Comment décoder les entrées /proc/pid/pagemap sous Linux ?

Comment définir la swapiness par processus pour Linux?

changer /proc/PID/environ après le démarrage du processus