J'ai donc une fonction qui charge une variable char ** avec quelques données de chaîne. Mon but est de fourchonner le processus et d'imprimer certaines de ces données dans l'enfant, et d'autres dans le parent. Cependant, je suis incapable de référencer le pointeur après l'appel fork().Référence des pointeurs après un appel de fork() C
Je pensais que fork() a fait une copie de l'espace d'adressage ensemble du processus parent, ce qui semble qu'il comprendrait les différents pointeurs de pile ...
Essentiellement, mon code ressemble actuellement à ceci:
load_data(char **data);
char** data;
load_data(data);
printf("String 0: %s\n", data[0]);
fork();
printf("String 0 again: %s\n", data[0]); /* Segfaults Here! */
Quelqu'un at-il une idée de ce que je fais de mal? J'ai fait un peu de recherche sur google à ce sujet, et il semble que ce que je fais devrait fonctionner - mais ce n'est pas le cas. Ainsi, je suis malentendu quelque chose de fondamental ...
* "Je pensais que fork() fait une copie de tout l'espace d'adressage du processus parent, ce qui semble inclure les différents pointeurs de pile ... "* Ceci n'est pas pertinent pour la question, mais au moins sur la plupart des systèmes UNIX modernes,' fork' doesn ' t copier tout l'espace d'adresse au moment où il est appelé. Il utilise un schéma * copy-on-write *; les pages de mémoire sont copiées dès qu'elles changent. Il * sent * comme des pages de mémoire copiées au moment de 'fork '. –