我試圖透過動態連結器在所有進程中運行一些啟動程式碼。
程式碼應該根據進程的第零個參數來執行操作。我從/proc/self/cmdline
(如果您知道在 main 之外訪問它們的更好方法,請告訴)獲取參數,但是這有一個問題:
腳本將其 shebang (不帶#!
)作為其第零個參數,在這種情況下,我對下一個參數感興趣。但是我要如何區分解釋過程和本機過程呢?
答案1
您從中提取的詳細資訊可以在(無需腳本)/proc/self/status
中找到。/proc/self/comm
對於預期的問題:確定哪些進程是解釋的以及哪些是本國的,如果不知道要執行哪些進程,則無法執行此操作口譯員。畢竟,任何進程都可以透過exec
呼叫來重新命名自己,使用牠喜歡的任何結果進程的參數列表。你可以猜測透過將/proc/self/exe
(指向可執行檔)與參數列表進行比較,但這只是一個猜測,因為有一些例子,非解釋器重命名其後代只是為了使它們的使用更加明顯。
延伸閱讀:
答案2
看來進程進入Name
了
</proc/self/status |grep '^Name'
這個名稱似乎是basename
真正的第零個參數的名稱。
(我會將問題保留在這裡,以防有人提供更好的答案)。