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

标签 c linux process rename argv

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

最佳答案

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

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

这意味着您将获得发出 ps -aps -ax 的进程的不同名称。

如果您在执行 ps 时希望不同的参数使用相同的进程名称,您可以同时执行它们(即更改 argv[0] 并调用 prctl)。

希望回答对您有所帮助。

关于在 Linux 中更改进程名称而不更改 argv[0],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16165667/

相关文章:

c - 在 Raspberry PI 上用 C 从图像中读取 RGB 数据

php - chown : Operation not permitted

linux - Linux 中的恢复脚本第 2 部分

process - 如何监控容器内的进程?

c - 为什么我用 fgets() 得到一个空的换行符

c - 涉及 sin() 的两个非常相似的函数表现出截然不同的性能——为什么?

c - 编译后生成的二进制文件会发生什么

Linux/Bash,使用 ps -o 按特定名称获取进程?

C虚拟操作

c - 从文件中读取 int 和 char 数组,然后调整数组大小