gpt4 book ai didi

c - 我们可以使用 c 在 linux 中创建一个进程有多少种方法

转载 作者:IT王子 更新时间:2023-10-29 00:38:50 25 4
gpt4 key购买 nike

我对在 Linux 中创建进程感到困惑。到目前为止,我认为我们可以通过调用以下系统调用来创建进程。

  1. system()
  2. exec() 系统调用族
  3. fork() 系统调用

但是:

  1. system():但是当“系统”系统调用在 shell 上执行输入可执行文件时,shell 正在创建一个子进程来执行输入。这里 shell 正在调用子进程,然后我们可以说 fork 正在为此创建进程。

  2. exec 系列系统调用: 由于该系列系统调用用新进程覆盖了当前正在运行的进程。所以它也创建了一个新进程,但使用相同的地址空间。正如我认为的那样,它也在调用 call fork 来创建流程。

我对以上所有是创建新进程或仅创建 fork 系统的可能方式感到困惑。

最佳答案

exec 系列系统调用不会调用 fork,也不会创建新进程。它只会用新的二进制文件覆盖现有进程。

linux用户程序中,fork是唯一创建新进程的函数。虽然fork在内部调用clone 和其他系统调用。

另一方面,system 只是forkexec 的包装器。创建进程的实际任务是由 system 中的 fork 完成的。 所以 system 不是创建新进程的方法。

关于c - 我们可以使用 c 在 linux 中创建一个进程有多少种方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21205723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com