從 /proc/self 取得原始命令調用

從 /proc/self 取得原始命令調用

我試圖透過動態連結器在所有進程中運行一些啟動程式碼。

程式碼應該根據進程的第零個參數來執行操作。我從/proc/self/cmdline(如果您知道在 main 之外訪問它們的更好方法,請告訴)獲取參數,但是這有一個問題:

腳本將其 shebang (不帶#!)作為其第零個參數,在這種情況下,我對下一個參數感興趣。但是我要如何區分解釋過程和本機過程呢?

答案1

您從中提取的詳細資訊可以在(無需腳本)/proc/self/status中找到。/proc/self/comm

對於預期的問題:確定哪些進程是解釋的以及哪些是本國的,如果不知道要執行哪些進程,則無法執行此操作口譯員。畢竟,任何進程都可以透過exec呼叫來重新命名自己,使用牠喜歡的任何結果進程的參數列表。你可以猜測透過將/proc/self/exe(指向可執行檔)與參數列表進行比較,但這只是一個猜測,因為有一些例子,非解釋器重命名其後代只是為了使它們的使用更加明顯。

延伸閱讀:

答案2

看來進程進入Name

</proc/self/status |grep '^Name'

這個名稱似乎是basename真正的第零個參數的名稱。

(我會將問題保留在這裡,以防有人提供更好的答案)。

相關內容