Piszę prostą powłokę jako przypisanie do systemu operacyjnego, muszę wyszukać w PATH, aby znaleźć wpisany program, po znalezieniu odpowiedniego katalogu, zajmiemy się fragmentem pamięci wystarczającym do przechowywania nazwy katalogu plus nazwa programu i przekazuję go jako pierwszy argument funkcji execv().Co dzieje się z dynamicznie przydzielaną pamięcią podczas wywoływania execv()?
Mogłem statycznie przyznać około 100 znaków, ale posiadanie limitu sprawia, że czuję się nieswojo. Więc kiedy execv() zostanie uruchomiony, czy sterta zostanie wyczyszczona, czy utracona jest ta część pamięci?
To może nie jest dużo pamięci, ale jestem po prostu ciekawy.
Jeśli statycznie przydzielono bufor do przechowywania ścieżki, musi to być co najmniej maksymalna długość ścieżki bezwzględnej Linuksa. Wyszukiwarka google wyjawia, że jest to '4096' (z'/usr/src/linux-2.4.20-8/include/linux/limits.h', '#define PATH_MAX 4096/* # chars w nazwie ścieżki, w tym nul */'). Powinieneś więc włączyć 'limits.h' i wprowadzić długość znaków w buforze' PATH_MAX'. – Praetorian