odczytanie nazwy kalalogu pliku wykonywalnego

2011-09-10 12:33
0

Witam,
Potrzebny mi jest możliwie jak najprostszy sposób dostania nazwy katalogu/folderu z którego wywołałem plik wykonywalny. Mam taki kod który wyświetla mi zawartość katalogu w którym odpaliłem program:

#include <stdio.h>
#include <dirent.h>

int main(){
    DIR *dir;
    struct dirent *plik;

    dir = opendir(".");
    plik = dir;

    while(plik = readdir(dir)){
        printf("%s\n", plik->d_name);
    }

    closedir(dir);
    return 0;
}

Nie wiem w jaki sposób uzyskać nazwę katalogu nadrzędnego, najlepiej gdyby udało się to z robić w jakiś podobny sposób. Dzięki z góry za pomoc

Pozostało 580 znaków

2011-09-10 13:28
Kumashiro

W argv[0] masz wskaźnik do tablicy ze ścieżką do pliku, który został użyty do wykonania programu (Uwaga! Nie musi to być ścieżka do samego pliku wykonywalnego!). Jeśli ścieżka w niej jest względna, możesz zrobić bezwzględną łącząc (umiejętnie) ją z wynikiem getcwd(). Potem już wystarczy odciąć ostatni element ścieżki.
Jeśli to Linux, to w nieprzenośny sposób możesz użyć /proc/<pid>/cmdline.

Oops... Zapomniałem, że istnieje realpath(). W takim razie nie musisz się bawić w łączenie :) - Kumashiro 2011-09-10 13:32

Pozostało 580 znaków

2011-09-10 13:31
0

a no faktycznie, zapomniałem o argv;) dzięki wielkie;)

Pozostało 580 znaków

2011-09-10 13:34
Kumashiro
0

Pamiętaj tylko, że argv[0] bywa zwodnicze :)

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0