在Linux中更改进程名称而不更改argv [0]

Jér*_*rin 8 c linux rename process argv

我需要用C语言修改程序的进程名称.
我确切地说,这不是我想要改变的线程的名称.
我想更改程序的名称,但我找到的唯一解决方案是修改其值argv[0].
我也找到了另一个解决方案prctl(PR_SET_NAME, "newname"),但这个解决方案不起作用.

小智 18

调用prctl和修改之间的区别argv[0]是:

  • 修改argv[0]更改信息/proc/$pid/cmdline
  • 调用中的prctl(PR_SET_NAME)更改信息/proc/$pid/status

这意味着你会得到你的进程发行的差别名称ps -aps -ax.

如果在执行ps时期望不同参数的进程名称相同,则可以同时执行它们(即更改argv[0]和调用prctl).

希望答案有所帮助.