fork()和exec()之间有何本质区别?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1339个文字,预计阅读时间需要6分钟。
每个应用(程序)都是通过进程的方式来执行的,进程是正在运行的程序实例。进程是通过不同的系统调用创建的,最常用的是fork()和exec()。那么,它们之间有什么区别呢?
下面简要介绍:
fork():- 创建一个与父进程几乎完全相同的子进程。- 子进程继承父进程的代码、数据、文件描述符等。- 子进程的PID(进程ID)与父进程不同,但两者的PPID(父进程ID)相同。- fork()后,父进程和子进程将并行执行。
exec():- 替换当前进程的映像,并从指定的文件中加载新的程序。- 当前进程在执行exec()后不再存在,而是变成了新加载的程序。- exec()可以执行本地文件或远程文件。
区别:- 进程关系:fork()创建的子进程与父进程并行执行,而exec()替换当前进程,不再存在父进程。- 执行文件:fork()创建的子进程继承父进程的代码,而exec()加载新的程序。- 进程状态:fork()创建的子进程与父进程状态相同,而exec()替换当前进程,状态发生变化。
总结:- fork()用于创建新的进程,子进程与父进程并行执行。- exec()用于替换当前进程,执行新的程序。
每一个应用(程序)都是通过进程的方式来执行的,进程是一个正在运行的程序实例。进程是通过不同的系统调用创建的,最流行的是fork()和exec(),那么它们之间有什么区别?下面本篇文章就来给大家介绍一下fork()和exec()之间的区别,希望对大家有所帮助。C语言中的fork()
pid_t pid = fork();
fork()通过复制调用进程来创建一个新进程,产生了一个新的PID,新进程(称为子进程)是调用进程(称为父进程)的精确副本。
本文共计1339个文字,预计阅读时间需要6分钟。
每个应用(程序)都是通过进程的方式来执行的,进程是正在运行的程序实例。进程是通过不同的系统调用创建的,最常用的是fork()和exec()。那么,它们之间有什么区别呢?
下面简要介绍:
fork():- 创建一个与父进程几乎完全相同的子进程。- 子进程继承父进程的代码、数据、文件描述符等。- 子进程的PID(进程ID)与父进程不同,但两者的PPID(父进程ID)相同。- fork()后,父进程和子进程将并行执行。
exec():- 替换当前进程的映像,并从指定的文件中加载新的程序。- 当前进程在执行exec()后不再存在,而是变成了新加载的程序。- exec()可以执行本地文件或远程文件。
区别:- 进程关系:fork()创建的子进程与父进程并行执行,而exec()替换当前进程,不再存在父进程。- 执行文件:fork()创建的子进程继承父进程的代码,而exec()加载新的程序。- 进程状态:fork()创建的子进程与父进程状态相同,而exec()替换当前进程,状态发生变化。
总结:- fork()用于创建新的进程,子进程与父进程并行执行。- exec()用于替换当前进程,执行新的程序。
每一个应用(程序)都是通过进程的方式来执行的,进程是一个正在运行的程序实例。进程是通过不同的系统调用创建的,最流行的是fork()和exec(),那么它们之间有什么区别?下面本篇文章就来给大家介绍一下fork()和exec()之间的区别,希望对大家有所帮助。C语言中的fork()
pid_t pid = fork();
fork()通过复制调用进程来创建一个新进程,产生了一个新的PID,新进程(称为子进程)是调用进程(称为父进程)的精确副本。

