如何在应用程序捆绑包内的C中查找当前目录[macOS]

时间:2019-04-13 11:05:30

标签: c macos perl

我们有一个应用程序包,其主要可执行文件已用Perl编写并与pp打包。不幸的是,此可执行文件阻止我们对.app进行代码签名。显然,使用pp创建的可执行文件无法进行代码签名。为了允许进行代码签名,我们希望将主可执行文件从其默认文件夹“ MacOS”移动到“ Resources”文件夹,因为该文件夹似乎可以托管用于代码签名的可执行文件并创建将运行此可执行文件的启动器。我们不知道这是否行得通,但是我们想尝试一下。

我们需要创建一个启动器,以放入“ MacOS”文件夹中,这将启动我们的主要可执行文件。我制定了一个小的C程序,该程序在另一个文件夹中启动可执行文件。它在Finder中工作正常,但是如果在.app结构中则失败。显然,这与.app内部的相对路径不同有关。我希望将以下方法添加到以下C程序中:获取.app的当前目录,并构建要打开的可执行文件的相对路径。作为我第一次用C语言写东西,我需要您的帮助来进行这种修改。

#include<stdlib.h>
#include<stdio.h>

int main( void ){

int result ;
result=system("../Resources/MyApp");
printf("%d", result);
return 0;
}

1 个答案:

答案 0 :(得分:1)

我不确定您要做什么,但是pwd是您要寻找的东西。在第一段代码中,您将收到工作目录的完整路径;在第二段代码中,您将使用int result知道操作已成功完成(如果result = 0表示正常)

#include <stdlib.h>
#include <stdio.h>

int main(void)
{
    char* dir= malloc (50);
    dir = getenv("pwd");
    printf("Workdir: %s\n", dir);
    free(dir);

    int result;
    result = system("pwd");
    printf("%d", result);
    return 0;
}

然后您可以编辑完整路径并创建相对路径。