![]() |
1
47
不,是的。 不,它们不会以程序员可见的任何方式共享;进程可以独立地修改自己的变量副本,并且它们将更改,而不会对fork()父进程、兄弟进程或子进程的其他进程产生任何明显影响。 但是,是的,操作系统实际上在最初共享页面,因为fork实现了copy-on-write,这意味着如果没有任何进程修改页面,那么它们是共享的。然而,这是一个可以忽略的优化。 如果你想要共享变量,把它们放在一个匿名共享映射中(见mmap()),在这种情况下,它们真的会被共享,附带所有的警告。 |
![]() |
2
36
换句话说,不,父级的全局变量不会因子级的更改而改变。 |
![]() |
3
14
fork()之后,整个进程(包括所有全局变量)都将被复制。子级是父级的精确副本,但它具有不同的PID(进程ID)、不同的父级,并且fork()返回0。全局变量在其自身的过程中仍然是全局的。所以答案是否定的,全局变量在调用fork()后不会在进程之间共享。 |
![]() |
4
3
不,因为全局变量不会在进程之间共享,除非实现了某些IPC机制。将复制内存空间。因此,在fork之后,两个进程中的全局变量将在中间具有相同的值,但是如果一个进程更改了它,另一个进程将看不到它的更改。 另一方面,线程确实共享全局变量。 |
![]() |
Sandeep · 从根目录开始打印完整的符号链接信息 3 年前 |
![]() |
jojo · 用正则表达式搜索,但仅用sed替换字符串的一部分 3 年前 |
![]() |
David Gall · 查找在特定日期从特定计算机登录的所有用户 3 年前 |
![]() |
JLLMNCHR · 如何在Oracle中将大型表导出/假脱机到文件 6 年前 |