【发布时间】:2015-11-04 15:59:19
【问题描述】:
如果我使用 fork() 系统调用创建子进程,然后我使用#ps aux 命令查看进程的大小,我总是看到子进程比父进程大 4 KB!!! 我还想知道如何知道 RAM 中任何进程的实际地址,而不是 /proc/pid/maps 中显示的相对地址 提前致谢
pid = fork();
if( pid == 0)
{
getchar();
execlp("/usr/bin/top", NULL);
}
else
{
wait(&childstatus);
printf("Hello From Parent\n");
}
当子进程等待 getchar() 时,我运行#ps aux。
【问题讨论】:
-
您的问题需要更加具体,例如显示您正在运行的一些代码。你为什么担心额外的 4KB?您是否在内存有限的微控制器上运行进程?
-
我不担心尺寸。我只是想了解背景中实际发生的事情。我知道当我使用 fork() 时,子进程共享父进程的地址空间。如果子进程改变了任何东西(比如变量),那么就会发生写入时复制,并且子进程将拥有自己的该变量的副本。现在就两个进程最初共享地址空间而言,为什么它们的大小不一样?
标签: fork