一尘不染

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

linux

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


阅读 445

收藏
2020-06-03

共1个答案

一尘不染

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

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

这意味着您将获得流程发布ps -a和的不同名称ps -ax

如果在执行ps时期望不同的参数具有相同的进程名称,则可以同时使用它们(即change argv[0]和invoke prctl)。

希望答案有所帮助。

2020-06-03