fork()在操作系统中

时间:2013-10-15 02:37:40

标签: operating-system fork

在操作系统的概念中,我们总是说在fork()执行中,子和父有自己的堆和堆栈副本,但它们共享内存段。我的问题是当我们说共享内存段意味着他们将要执行的文本或代码?

2 个答案:

答案 0 :(得分:1)

正确(至少在Linux上会发生这种情况)。根据{{​​1}}的Linux联机帮助页(您可以通过在控制台中键入fork或在没有任何Linux时输入here来查看):

  

fork()通过复制调用进程来创建一个新进程。该   新的过程,被称为孩子,是一个完全相同的   调用进程,称为父进程,但以下情况除外   分:

     
      
  • 进程ID对于父级&子
  •   
  • 子进程ID与父进程ID
  • 相同   
  • 内存锁,信号量,信号等不是继承的
  •   
  • ...
  •   

答案 1 :(得分:1)

除了上面提供的答案。

fork()系统调用创建一个进程,该进程成为它正在分叉的父进程的副本。相同的可执行文件。

此处提供的示例清楚地解释了这一概念。here

但是我们可能希望执行具有不同存在的新进程。为此我们需要exec()系统调用。

Exec()系统调用从现有可执行文件创建一个新进程。因此,使用exec()可以解决具有重复可执行文件的新进程的问题。

这里解释了各种类型的Exec()调用。Exec()