linux - 获取指向 argv[0] 的指针,以便我可以更改它

标签 linux argv

根据我上一个主题中的评论,我的问题得到了解答,但我需要提出另一个主题:所以我在/proc/self/exe 上使用了 readlink 但如果您想找到可执行文件的路径。缓冲区是你的,对其他任何东西都没有影响。我的问题是,如何更改 top/argv[0] 显示的可执行文件名称。

我无权访问 main 函数,因此无法访问 argv

最佳答案

您可以使用 prctl设置 top 显示的名称.

#include <sys/prctl.h>

void function()
{
    ...
    prctl(PR_SET_NAME, "new name", 0, 0, 0);
    ...
}

请注意,这不会更改 ps 显示的名称,或 /proc/<pid>/exe 的内容.此外,它只更改当前线程的名称,并且最多必须为 16 个字节。参见 man prctl并寻找 PR_SET_NAME了解更多详情。

关于linux - 获取指向 argv[0] 的指针,以便我可以更改它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29159130/

相关文章:

linux - 如何在 linux 中复制 2 个目录,只覆盖 bash 中的旧文件

python - 循环和子流程中的列表,标准输出

linux - 在 linux 中执行上一个命令的最后一行输出

c - 为什么在为存储要在程序中使用的 main 参数的指针变量赋值之前不分配空间?

c - 从 stdin 读取 execv 的参数? (C)

linux - 如何防止并行安装多个版本的 RPM?

c - gdb核心转储警告: Can't open file/memfd:magicringbuffer (deleted) during file-backed mapping note processing

c - 使用 C 在 OS X 中获取其他进程的 argv

command-line - Jython 2.5.1 : Calling From Java into __main__ - how to pass in command line args?

c - main(int argc, char *argv[]) 损害了我的程序