Witam!
Wiecie może w jaki sposób nadać swojej aplikacji możliwość wychodzenia i edytowania plików ze swojego katalogu bieżącego?
To znaczy np:.Nie działa komenda: system("cd .."). A bardzo potrzebuję takiego mechanizmu.
Na necie znalazłem jakieś polecenie dla konsoli cmd ale takiej funkcji nie ma na liście komend w konsoli windows 10.
Z góry dziękuję za odpowiedzi.
Od początku, co chcesz zrobić?
Jak wyżej, bo może chcesz wykonać jakieś polecenie podająć absolutną ścieżkę?
Bartek57810 napisał(a):
Witam!
Wiecie może w jaki sposób nadać swojej aplikacji możliwość wychodzenia i edytowania plików ze swojego katalogu bieżącego?
To znaczy np:.Nie działa komenda: system("cd .."). A bardzo potrzebuję takiego mechanizmu.
Na necie znalazłem jakieś polecenie dla konsoli cmd ale takiej funkcji nie ma na liście komend w konsoli windows 10.
Z góry dziękuję za odpowiedzi.
Widzę, ze trafiłeś na jakies patologiczne przykłady.
Zostaw system("cd ..") w spokoju, 1)
- z wielu powodów, np to jest wywołanie shella na "jeden strzał", zaraz się kończy i nie ma z tego efektów
Prawie dokładnie moje pytanie sprzed 6 lat xd:
https://unix.stackexchange.com/questions/141313/chdirdirectory-doesnt-change-directory-after-exiting-to-shell
Żeby uściślić, chodzi o to, że system()
wywołuje nowy proces. Każdy proces posiada coś takiego jak katalog bieżący. Proces powstały w wyniku system()
odziedziczy po rodzicu ten katalog, potem wykona cd ..
(czyli zmieni katalog bieżący). Następnie wyjdzie. Zmiana katalogu nie propaguje się do procesu-rodzica. Aby osiągnąć ten efekt na Windowsie, można użyć np. funkcji SetCurrentDirectory
:
https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-setcurrentdirectory
Przykład (zakładam, że działający, bo nie mam Windowsa na testy):
#include <cstdlib>
#include <winbase.h>
int main() {
system("cd"); // wypisze katalog bieżący
SetCurrentDirectory("..");
system("cd"); // wypisze katalog bieżący
}
Dzięki! Już wiem co robić.