我需要修改我的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 -a
和 ps -ax
的进程的不同名称。
如果您在执行 ps 时希望不同的参数使用相同的进程名称,您可以同时执行它们(即更改 argv[0]
并调用 prctl
)。
希望回答对您有所帮助。
关于在 Linux 中更改进程名称而不更改 argv[0],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16165667/