我有一个问题,实际上我对子进程和父进程不了解。当我在子进程中更改全局变量时,这些更改不会影响父进程。我在这个网站上看到一句话。它说:“修改父项或子项中的任何变量都不会看到对另一个变量所做的更改。”你能提供更多信息吗?谢谢。
最佳答案
我认为您对进程和线程之间的区别感到困惑。
一个进程可以包含多个线程。进程有自己的地址空间和系统变量(如文件句柄)。进程只能通过IPC机制进行交互,否则不能直接接触另一个进程变量。每个进程都有一个操作系统用来识别它的 PID(至少在 linux 中是这样)。进程可以有许多线程在进程之上运行。
线程 是一种可以在进程内运行的独特结构。每个线程都有自己唯一的堆栈指针(指向正在执行的程序集)和唯一的注册表值。当操作系统在线程之间切换时,它会切换当前执行行并恢复存储在该线程中的所有注册表值。但是,进程中的线程共享所有相同的内存,这就是为什么您可以在线程之间修改全局变量和类变量并且它们会受到影响。
如果有人想插话,他们可以。这只是我认为理解进程和线程之间差异的一些重要点的简要总结。
关于linux - 全局变量、子进程和父进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9105902/