Czy zawartość tablic **environ i *env[] może się różnić? Dlaczego?

0

Tak jak w temacie. Poszukuję odpowiedzi, albo wskazówek dotyczących pytania:

Czy zawartość tablic **environ i *env[] może się różnić? Dlaczego?

0

Pytanie zasadnicze: co to za tablice?

0

Dokładnie co to za tablice, już pomijając fakt, że **environ nie jest tablicą, a wskaźnikiem do wskaźnika na jakiś tam typ

0

Tablica to prawie to samo co wskaźnik, tzn obojętnie czy zadeklaruję int tablica[10] czy int *tablica, to tablica wskazuje na adres pierwszego elementu. Być może **environ i *env[] wskazują na ten sam obszar pamięci i są w identyczny sposób używane.

1

Rozumiem że o to chodzi:

Historically, most UNIX systems have provided a third argument to the main function that is the address of the environment list:
int main(int argc, char *argv[], char *envp[]);
Because ISO C specifies that the main function be written with two arguments, and because this third argument provides no benefit over the global variable environ, POSIX.1 specifies that environ should be used instead of the (possible) third argument

(źródło: Stevens - Advanced Programming In The UNIX Environment 2e (2005))

Obie tablice różnić się nie powinny, ale jeśli zmodyfikujemy zmienne po włączeniu programu? Możliwe że wtedy environ będzie miał wartości poprawne a envp[] niekoniecznie (ale to tylko takie moje dywagacje)

0

Przekonałeś mnie, że warto zainwestować w Stevens'a i jego publikacje. + dla Shalom

PS: environ to tablica przechowująca zmienne systemowe z jakimi program został uruchomiony.
char *environ[] jest to trzeci paramter funkcji main (tak, są 3 nie w).

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