我很難理解程序的輸出。在使用fork()
後,變量inmem
的存儲位置顯示相同。 有人可以解釋這個! Thanku使用叉子變量的內存位置
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int inmem = 9;
int pid = fork();
if(!pid)
{
printf("child inmem %d %p\n", inmem,&inmem);
inmem = 8;
printf("child inmem %d %p\n", inmem, &inmem);
}
else
{
printf("parent inmem %d %p\n", inmem, &inmem);
inmem = 5;
printf("parent inmem %d %p\n", inmem, &inmem);
}
return 0
}
輸出 -
parent inmem 9 0x7ffff0acdfc8
parent inmem 5 0x7ffff0acdfc8
child inmem 9 0x7ffff0acdfc8
child inmem 8 0x7ffff0acdfc8
有一些系統調用* *份額幾種不同進程之間的虛擬內存。參見[shm_overview(7)](http://man7.org/linux/man-pages/man7/shm_overview.7.html)和[mmap(2)](http://man7.org/linux/man-頁/男2/mmap.2.html)。您需要同步,請參閱[sem_overview(7)](http://man7.org/linux/man-pages/man7/sem_overview.7.html)。閱讀[高級Linux編程](http://advancedlinuxprogramming.com/) –
爲什麼你不包括'#包括'? –
ajay
請不要忽略編譯器警告。用'-Wall'編譯你的代碼,並注意一次,你會看到你需要_cast_你要傳遞給'printf'的指針,到'(void *)' –