考慮在PID 100中運行的進程(它可以是普通的shell命令行)。因此,我們啓動一個程序(fork()/exec()
),它開始在PID 101運行現在我們的操場已準備就緒:如何知道環境變量是否從父進程繼承?
在PID 101上運行的程序導出一些環境變量,並在第二個方案做一個exec()
,然後它開始運行在相同的PID 101(「環境」)中。
第二個程序如何知道某個環境變量是從父PID 100中導出還是由在「重用」當前PID中運行的前驅程序定義的?
考慮在PID 100中運行的進程(它可以是普通的shell命令行)。因此,我們啓動一個程序(fork()/exec()
),它開始在PID 101運行現在我們的操場已準備就緒:如何知道環境變量是否從父進程繼承?
在PID 101上運行的程序導出一些環境變量,並在第二個方案做一個exec()
,然後它開始運行在相同的PID 101(「環境」)中。
第二個程序如何知道某個環境變量是從父PID 100中導出還是由在「重用」當前PID中運行的前驅程序定義的?
第二個程序如何知道某個環境變量是從父PID 100導出的 還是由在「重用」當前PID中運行的前驅程序定義的?
有沒有辦法區分(除非變量本身包含一些額外的信息 - 如前綴/後綴名稱或值等)。
至於,PID 101而言每一個環境變量是來自其母公司(進程只有一個父),它並不關心,也無法知道它是否從PID 100或從父母的PID 100或其他一些進程,導致高達PID的EXEC 101
可以比較的101環境的父親 /bin/env
似乎有沒有辦法做到這一點的原始環境,但是我用了以下解決方法:
Th第一個過程使用其realpath
和PID導出變量。所以,當在同一個PID但不同的可執行文件路徑中時,我假設該變量是繼承的,當處於相同的PID和exe路徑中時,我假定它在創建變量的進程(程序)中。
我知道這不是可靠的。沒有保證PID和realpath
將確保變量是否繼承或否。但是,正在工作。
環境只是一組鍵值對。它沒有其他信息。 – rustyx