我试图通过动态链接器在所有进程中运行一些启动代码。
代码应该根据进程的第零个参数来执行操作。我从/proc/self/cmdline
(如果您知道在 main 之外访问它们的更好方法,请告诉)获取参数,但是这有一个问题:
脚本将其 shebang (不带#!
)作为其第零个参数,在这种情况下,我对下一个参数感兴趣。但是我如何区分解释过程和本机过程呢?
答案1
您从中提取的详细信息可以在(无需脚本)/proc/self/status
中找到。/proc/self/comm
对于预期的问题:确定哪些进程是解释的以及哪些是本国的,如果不知道要执行哪些进程,则无法执行此操作口译员。毕竟,任何进程都可以通过exec
调用重命名自身,使用其喜欢的任何内容作为结果进程的参数列表。您可以猜测通过将/proc/self/exe
(指向可执行文件)与参数列表进行比较,但这只是一个猜测,因为有一些例子,非解释器重命名其后代只是为了使它们的使用更加明显。
进一步阅读:
答案2
看来进程进入Name
了
</proc/self/status |grep '^Name'
该名称似乎是basename
真正的第零个参数的名称。
(我会将问题保留在这里,以防有人提供更好的答案)。