GNU/Linux >> Belajar Linux >  >> Linux

Linux – Ubah /proc/pid/environ Setelah Proses Dimulai?

$ k=v p &
[1] 3028

apakah ada cara untuk p untuk mengubah isi /proc/3028/environ belum lagi k=v sementara p masih berjalan?

Jawaban yang Diterima:

Di Linux, Anda dapat menimpa nilai string lingkungan pada tumpukan.

Jadi Anda dapat menyembunyikan entri dengan menimpanya dengan nol atau apa pun:

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

Jalankan sebagai:

$ 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 telah ditimpa dengan

Linux
  1. Linux – Bagaimana Cara Membaca Dari /proc/$pid/mem Di Linux?

  2. Bagaimana cara mendapatkan jalur proses di Unix / Linux

  3. Ubah nama proses di Linux

  1. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?

  2. Bagaimana cara mendekode entri /proc/pid/pagemap di Linux?

  3. Bagaimana cara mengatur swapiness per proses untuk linux?

  1. Linux – Ubah /proc/pid/environ Setelah Proses Dimulai?

  2. Linux – Mendapatkan Informasi Tentang Penggunaan Memori Proses Dari /proc/pid/smaps?

  3. Linux – Menautkan /proc/mnt Ke /proc/mounts?