![]() |
1
47
不,是的。 不,它们不会以程序员可见的任何方式共享;进程可以独立地修改自己的变量副本,并且它们将更改,而不会对fork()父进程、兄弟进程或子进程的其他进程产生任何明显影响。 但是,是的,操作系统实际上在最初共享页面,因为fork实现了copy-on-write,这意味着如果没有任何进程修改页面,那么它们是共享的。然而,这是一个可以忽略的优化。 如果你想要共享变量,把它们放在一个匿名共享映射中(见mmap()),在这种情况下,它们真的会被共享,附带所有的警告。 |
![]() |
2
36
换句话说,不,父级的全局变量不会因子级的更改而改变。 |
![]() |
3
14
fork()之后,整个进程(包括所有全局变量)都将被复制。子级是父级的精确副本,但它具有不同的PID(进程ID)、不同的父级,并且fork()返回0。全局变量在其自身的过程中仍然是全局的。所以答案是否定的,全局变量在调用fork()后不会在进程之间共享。 |
![]() |
4
3
不,因为全局变量不会在进程之间共享,除非实现了某些IPC机制。将复制内存空间。因此,在fork之后,两个进程中的全局变量将在中间具有相同的值,但是如果一个进程更改了它,另一个进程将看不到它的更改。 另一方面,线程确实共享全局变量。 |
![]() |
Community wiki · C中有哪些耗时的操作? 1 年前 |
![]() |
Community wiki · 将所有处理器电源都投入到任务中 1 年前 |
![]() |
Community wiki · C++为C添加了什么?[已关闭] 1 年前 |
![]() |
Community wiki · 打印1到1000,不带循环或条件 1 年前 |