GNU/Linux >> Linux の 問題 >  >> Linux

Linux –プロセス開始後に/ proc / pid / environを変更しますか?

$ k=v p &
[1] 3028

pの方法はありますか /proc/3028/environの内容を変更するには k=vは言うまでもありません while p まだ実行中ですか?

承認された回答:

Linuxでは、スタック上の環境文字列の値を上書きできます。

したがって、エントリをゼロなどで上書きして非表示にすることができます。

#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;
}

実行:

$ 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

k=v で上書きされました

Linux
  1. Linuxは複数の連続したパスセパレーター(/ home //// username /// file)をどのように処理しますか?

  2. Linux – / proc / pid / smapsからプロセスのメモリ使用量に関する情報を取得しますか?

  3. Linux – / proc / pid / fd / xリンク番号?

  1. Linux – Proc // fdinfo / 0の重要性?誰が作成しますか?

  2. Linux – / usr/binと/usr/sbinを/bin(gnu / linux)にマージしますか?

  3. Unix / Linux でプロセスのパスを取得するにはどうすればよいですか

  1. /proc/[pid]/pagemaps および /proc/[pid]/maps | Linux

  2. Linux で /proc/pid/pagemap エントリをデコードするには?

  3. プロセスが実行されているフォルダーを見つける方法は?