【问题标题】:Get pointer to argv[0] so I can change it获取指向 argv[0] 的指针,以便我可以更改它
【发布时间】:2015-03-20 12:11:07
【问题描述】:

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

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

【问题讨论】:

  • 前面好像有两个问题:Changing argv[0] with WinAPIFinding argv[0] so I can change it。您可能会注意到argv[0] 中的值不一定与您运行的可执行文件的名称有任何关系。例如:execl("/bin/sleep", "rip van winkle", "30", (char *)0); 将让您保持 sleep 运行,但 argv[0] 中的值是 rip van winkle,而不是 sleep
  • 感谢@JonathanLeffler。

标签: linux argv


【解决方案1】:

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

#include <sys/prctl.h>

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

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

【讨论】:

  • 谢谢克雷格。我希望更改可执行路径,以便 Firefox 重新启动使用此路径。所以这不起作用:(我认为这就是原因:stackoverflow.com/a/17120029/1828637
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-12
  • 2013-06-19
  • 2018-04-05
  • 2013-08-09
  • 2012-09-18
  • 2010-09-11
相关资源
最近更新 更多