fork vfork exec
时间: 2023-10-24 07:31:07 浏览: 138
深入解读Linux进程函数fork(),vfork(),execX()
fork, vfork, exec 都是 Unix/Linux 系统提供的系统调用。
1. fork 是用于创建一个新进程的系统调用。调用 fork 会创建一个与原进程几乎完全相同的子进程,包括代码、数据、环境变量等。子进程从 fork 的返回处开始执行,返回值不同可以区分是父进程还是子进程。子进程通过继承父进程的资源,但是具有独立的内存空间。
2. vfork 也是用于创建一个新进程的系统调用,与 fork 类似。不同的是,在 vfork 中,子进程会先暂停父进程的执行,直到子进程调用了 exec 或者 _exit 才会继续父进程的执行。vfork 主要用于创建临时进程来执行一个新程序,因为不需要复制父进程的整个地址空间,所以效率会更高。
3. exec 是用于执行一个新程序的系统调用。exec 函数族可以用来在当前进程中执行一个新程序,它会将当前进程替换为新程序的代码和数据。exec 函数族包括了 execl、execle、execlp、execv、execve、execvp 等多个变种,它们主要区别在参数传递方式和搜索可执行文件的路径上。
总结起来,fork 用于创建一个与父进程几乎完全相同的子进程,vfork 用于创建一个临时进程来执行新程序,exec 用于将当前进程替换为新程序的代码和数据。
阅读全文