找到指向argv [0]的指针,这样我就可以改变它

时间:2015-03-20 01:42:20

标签: c linux pointers argv

在Solaris上,我得到argv[0] getexecname的指针,然后我可以memcpy在该位置。 (按Finding current executable's path without /proc/self/exe

我想知道如何在argv[0] readlink上获取指向/proc/self/exe的指针,但它没有给我一个指向它的指针。

感谢

2 个答案:

答案 0 :(得分:1)

&argv[0]为您指向argv[0]

您可以覆盖存储在argv[0]指向的数组中的字符,只要您不要超过现有的null终止符;但是might cause UB尝试修改指针argv[0]

答案 1 :(得分:1)

对于readlink,带上你自己的缓冲区。您分配一个缓冲区,传入指向它的指针,readlink将结果存储在那里:

#include <unistd.h>
#include <linux/limits.h>

int main() {
  char buffer[PATH_MAX];

  int size = readlink("/proc/self/exe", buffer, sizeof(buffer));
  buffer[size] = '\0';

  // buffer is now the char* holding the filename

  printf("The executable is %s\n", buffer);
}