ฉันคิดได้ว่าวิธีการทำแบบนั้นค่อนข้างมีการเปลี่ยนแปลงและมันจะใช้ไม่ได้กับกระบวนการตามอำเภอใจ
สมมติว่าคุณเขียนไลบรารีที่ใช้ร่วมกันของคุณเองซึ่งใช้ 'char * getenv' จากนั้นคุณตั้งค่า env "LD_PRELOAD" หรือ "LD_LIBRARY_PATH" vars เพื่อให้ทั้งสองกระบวนการของคุณทำงานด้วยไลบรารีที่แชร์ของคุณที่โหลดไว้ล่วงหน้า
ด้วยวิธีนี้คุณจะสามารถควบคุมโค้ดของฟังก์ชัน 'getenv' ได้เป็นหลัก จากนั้นคุณสามารถใช้กลอุบายที่น่ารังเกียจได้ทุกประเภท 'getenv' ของคุณสามารถปรึกษาไฟล์ config ภายนอกหรือเซ็กเมนต์ SHM สำหรับค่าทางเลือกของ env vars หรือคุณสามารถค้นหา / แทนที่ regexp ตามค่าที่ร้องขอ หรือ ...
ฉันไม่สามารถนึกถึงวิธีง่ายๆในการทำเช่นนั้นสำหรับกระบวนการทำงานโดยพลการ (แม้ว่าคุณจะเป็นรูทก็ตาม) โดยย่อมาจาก dynamic linker (ld-linux.so)