本文介绍了找到指向 argv[0] 的指针,以便我可以更改它的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在 Solaris 上,我通过 getexecname 获得了一个指向 argv[0] 的指针,然后我可以在该位置 memcpy.(根据 在没有/proc/self/的情况下查找当前可执行文件的路径exe)

On Solaris I got a pointer to argv[0] with getexecname and then I can memcpy at that location. (per Finding current executable's path without /proc/self/exe)

我想知道如何在 Linux 中获得指向 argv[0] 的指针我在 /proc/self/exe 上做了 readlink 但是它没有给我一个指向它的指针.

I was wondering how to get a pointer to argv[0] in Linux I did readlink on /proc/self/exe but it doesn't give me a pointer to it.

谢谢

推荐答案

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

For readlink, Bring Your Own Buffer. You allocate a buffer, pass in a pointer to it, and readlink will store the results there:

#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);
}

这篇关于找到指向 argv[0] 的指针,以便我可以更改它的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

06-05 17:44