从 /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真正的第零个参数的名称。

(我会将问题保留在这里,以防有人提供更好的答案)。

相关内容