Unix 请解释一下

Unix 请解释一下,unix,fork,Unix,Fork,我已经在Unix中搜索了关于fork的任何地方,但我还没有理解一些东西。 例如,当我们在shell(bash)中运行命令时(比如说“ls”) 我们正在调用fork()系统调用吗?”ls'是子对象,当前shell是父对象 在我读过的书中,有一句话说得一模一样:“当当前运行的程序被复制成一个子程序时,就会产生一个fork,一个运行程序的精确副本。”。这是什么意思?舞会的确切副本?当我运行ps-ef时,我可以看到并理解PID和PPID(父项)。 但为什么书上这么说呢?确切副本不是同一个程序(程序的相同

我已经在Unix中搜索了关于fork的任何地方,但我还没有理解一些东西。 例如,当我们在shell(bash)中运行命令时(比如说“ls”) 我们正在调用fork()系统调用吗?”ls'是子对象,当前shell是父对象

在我读过的书中,有一句话说得一模一样:“当当前运行的程序被复制成一个子程序时,就会产生一个fork,一个运行程序的精确副本。”。这是什么意思?舞会的确切副本?当我运行ps-ef时,我可以看到并理解PID和PPID(父项)。 但为什么书上这么说呢?确切副本不是同一个程序(程序的相同过程)


我可以理解exec()系统调用。。。。请帮帮兄弟们。。。。谢谢你

你知道一个CPU如何执行多个进程,对吗?想象一下,这两个进程可能是相同的,也就是说,它们执行完全相同的代码,共享相同的资源。这本质上就是调用fork()系统调用时发生的情况

fork()系统调用被设计成一个原语,它是从现有进程派生更多进程的第一步。fork()调用基本上在内核中创建表示当前进程的数据结构的副本,并开始执行。然后,新进程可以用一个完全不同的程序的代码(使用exec()系统调用)覆盖自己,并执行它


任何需要创建另一个进程的进程都需要首先调用fork()来创建自身的副本。然后,副本执行其他一些程序。Bash每次需要执行另一个程序(如“ls”或“cp”或其他任何程序)时都必须这样做。它forks(),然后复制过程继续进行并执行目标程序。

是的,好的,我说“我不明白精确复制是什么意思”。。。例如,当我们在shell中执行命令时,使用相同的程序…让我们举一个例子。。。。您在shell(bash)上,希望找到一个文件。。。在前面执行命令…在shell中键入命令“find”。shell通过搜索路径来定位“find”的可执行文件。然后调用fork()来创建一个新进程。新创建的进程调用exec()来执行“find”程序。您可以说“然后它调用fork()来创建新进程”。。。。这个过程是外壳吗?我说得对吗?这是我的困惑。。。。谢谢,是的。Bash(shell)调用fork(),您说“然后它调用fork()来创建新进程”。我知道创建的新进程是SHELL,然后新SHELL执行find。。。。Shell生成Shell,新Shell执行find。。。。对吗?