如何在C中获取应用程序路径?

时间:2014-09-28 10:29:52

标签: c gtk filepath

我正在使用GTK为运行Linux的C程序创建一个界面。

我正在使用此功能加载我的XML界面:

gtk_builder_add_from_file(builder, g_build_filename("myInterface.glade", NULL), &error);

只要我在与编译文件相同的目录中,它就可以工作。 但如果我在另一个目录中,请说一个孩子并执行它:../a.out,我的程序找不到该文件。

所以我的想法是先获取程序路径(" / home /.../ program")并添加文件名以获得绝对路径。

但我不知道如何获得程序路径。而且我不确定这是否是让它成功的最佳选择。

有什么想法吗?谢谢!

2 个答案:

答案 0 :(得分:1)

在您使用GTK的情况下,最好使用GResource并将myInterface.glade直接编译到您的程序中。

答案 1 :(得分:0)

argv [0]包含运行程序时运行的相对/完整路径。

只扫描到最后一个'/',这将是您当前位置的运行目录

经过一些更多的研究后,我发现了这一点,它适用于所有情况:

#include<stdio.h>
#include <unistd.h>
#include <string.h>
#include <libgen.h>
int main()
{
  char path[500] = {0};
  int dest_len = 500;
  if (readlink ("/proc/self/exe", path, dest_len) != -1)
    {
        dirname (path);
        strcat  (path, "/");
        printf("path=%s\n", path);
    }
}