linux - 全局变量、子进程和父进程

标签 linux

我有一个问题,实际上我对子进程和父进程不了解。当我在子进程中更改全局变量时,这些更改不会影响父进程。我在这个网站上看到一句话。它说:“修改父项或子项中的任何变量都不会看到对另一个变量所做的更改。”你能提供更多信息吗?谢谢。

最佳答案

我认为您对进程线程之间的区别感到困惑。

一个进程可以包含多个线程。进程有自己的地址空间和系统变量(如文件句柄)。进程只能通过IPC机制进行交互,否则不能直接接触另一个进程变量。每个进程都有一个操作系统用来识别它的 PID(至少在 linux 中是这样)。进程可以有许多线程在进程之上运行。

线程 是一种可以在进程内运行的独特结构。每个线程都有自己唯一的堆栈指针(指向正在执行的程序集)和唯一的注册表值。当操作系统在线程之间切换时,它会切换当前执行行并恢复存储在该线程中的所有注册表值。但是,进程中的线程共享所有相同的内存,这就是为什么您可以在线程之间修改全局变量和类变量并且它们会受到影响。

如果有人想插话,他们可以。这只是我认为理解进程和线程之间差异的一些重要点的简要总结。

关于linux - 全局变量、子进程和父进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9105902/

相关文章:

linux - 重新编译未使用的 Linux 内核(使用 Xen)配置标志

linux - 使用 crontab 运行带参数的脚本

服务器端的 Python 套接字错误编号 3

linux - awk 在后台运行时的输出

ruby-on-rails - Ruby on Rails 无法访问 http :/localhost:3000 on MAC

linux - bash 函数中的命令引用

c - fork() 后子进程的独立 I/O

linux - 如何彻底剥离可执行文件

linux - 在我的服务器上部署和构建我的 go 应用程序

linux - 根据头信息计算ELF文件的大小