所以,我有一個函數用一些字符串數據加載char **變量。我的目標是分解過程,並在孩子中打印一些數據,並從父母打印一些數據。但是,我無法在fork()調用後引用指針。在C中fork()調用之後引用指針C
我認爲fork()的製造父進程,這似乎既包括各種堆棧指針的整個地址空間的副本...
從本質上講,我的代碼目前看起來是這樣的:
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! */
任何人有任何想法我做錯了什麼?我在這方面做了一些谷歌搜索,似乎我在做什麼應該可以工作 - 但事實並非如此。因此,我誤解的東西根本...
*「我還以爲叉()做了一個父進程的整個地址空間的副本,似乎它將包括各種堆棧指針......「*這與這個問題沒有密切關係,但至少在大多數現代UNIX系統中,fork'doesn'在當時複製整個地址空間調用。它使用* copy-on-write *方案;內存頁面在更改後立即被複制。它*感覺*就像`fork`時複製的內存頁面。 – 2010-12-09 01:10:52