如果我使用fork()系統調用來創建子進程,那麼我使用#ps aux命令來查看進程的大小,我總是看到子進程比父進程多4 KB! 我也想知道我怎麼能知道任何進程的RAM中的實際地址不顯示的相對的/ proc/PID /圖 預先感謝子進程比父進程大4 kb大小?
pid = fork();
if(pid == 0)
{
getchar();
execlp("/usr/bin/top", NULL);
}
else
{
wait(&childstatus);
printf("Hello From Parent\n");
}
我運行#ps AUX當子進程等待getchar()。
你需要更具體的問題,如顯示你正在運行的代碼。你爲什麼擔心額外的4KB?您是否正在使用內存有限的微控制器運行一個進程? –
我不擔心大小。我只是想了解背景中究竟發生了什麼。我知道當我使用fork()時,子進程共享父進程的地址空間。如果孩子改變任何東西(比如變量),那麼在寫入時發生拷貝並且子進程將擁有它自己的該變量的副本。現在就兩個進程最初共享地址空間的原因來說,它們爲什麼不具有相同的大小? – user3480226