|
|
1
47
不,是的。 不,它们不会以程序员可见的任何方式共享;进程可以独立地修改自己的变量副本,并且它们将更改,而不会对fork()父进程、兄弟进程或子进程的其他进程产生任何明显影响。 但是,是的,操作系统实际上在最初共享页面,因为fork实现了copy-on-write,这意味着如果没有任何进程修改页面,那么它们是共享的。然而,这是一个可以忽略的优化。 如果你想要共享变量,把它们放在一个匿名共享映射中(见mmap()),在这种情况下,它们真的会被共享,附带所有的警告。 |
|
|
2
36
换句话说,不,父级的全局变量不会因子级的更改而改变。 |
|
|
3
14
fork()之后,整个进程(包括所有全局变量)都将被复制。子级是父级的精确副本,但它具有不同的PID(进程ID)、不同的父级,并且fork()返回0。全局变量在其自身的过程中仍然是全局的。所以答案是否定的,全局变量在调用fork()后不会在进程之间共享。 |
|
|
4
3
不,因为全局变量不会在进程之间共享,除非实现了某些IPC机制。将复制内存空间。因此,在fork之后,两个进程中的全局变量将在中间具有相同的值,但是如果一个进程更改了它,另一个进程将看不到它的更改。 另一方面,线程确实共享全局变量。 |
|
|
sk123 · Shell脚本-如何在循环中显示变量名及其值 2 年前 |
|
|
sai · unix中使用python进行数据重组 2 年前 |
|
|
FangQ · 如何使用jq打印由制表符“\t”分隔的JSON数组元素 2 年前 |
|
|
ROHAN · 我想显示包含一个括号的行,包括它的开头或结尾 2 年前 |
|
Geomicro · 删除模式sed之间的逗号 2 年前 |