|
|
我写了一个程序,如下:
有一个缓冲区,在fork之后,子进程修改一个值,并打印该缓冲区的地址
main()
{
char* array;
array=(char*)malloc(sizeof(char)*5);
strcpy(array,"abcd");
pid_t pid;
if((pid=fork())==0)
{
printf("pid:% d\n",pid);
array[3]='o';
printf("child array:%x,% s\n",array,array);
}
else
{
printf("pid:%d\n",pid);
printf("father array:%x,%s\n",array,array);
}
}
输出:
pid:0
child array:804a008,abco
pid:8745
father array:804a008,abcd
可以看出两个array的地址相同,这是否说明子进程和父进程共享同一个缓冲区呢?
但是如果是这样的话,上面表明子进程先运行,将abcd修改了为abco。
父进程后运行,但是缓冲区的内容却没有变,这好像有说明了子进程复制了父进程缓冲区,这到底是怎么回事呢?
谢谢。 |
|