Как найти текущий каталог в C внутри пакета приложения [macOS] - PullRequest
0 голосов
/ 13 апреля 2019

У нас есть пакет приложений, основной исполняемый файл которого был написан на Perl и упакован с pp. К сожалению, этот исполняемый файл не позволяет нам кодировать .app. По-видимому, исполняемые файлы, созданные с помощью pp, не могут быть кодированы. Чтобы разрешить подписание кода, мы хотим переместить основной исполняемый файл из его папки по умолчанию «MacOS» в папку «Ресурсы», так как в этой папке можно разместить исполняемый файл для кодирования и создать модуль запуска, который будет запускать этот исполняемый файл. Мы не знаем, сработает ли это, но мы хотим попробовать.

Нам нужно создать модуль запуска, который будет помещен в папку «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 Ответ

1 голос
/ 13 апреля 2019

Я не совсем уверен, что вы хотите сделать, но 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;
}

тогда вы можете отредактировать полный путь и создать относительный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...