Unix核心编程:exec函数详解

需积分: 43 75 下载量 40 浏览量 更新于2024-07-13 收藏 4.7MB PPT 举报
"这篇内容主要涉及的是UNIX核心编程中的`exec`函数,它是UNIX系统中用于执行新程序的关键函数,可以替换当前进程的执行上下文。同时,文章还概述了UNIX/Linux操作系统的背景、发展历程以及不同派生版本,包括System V、Berkeley和Hybrid家族的操作系统,如AIX、Solaris、FreeBSD、NetBSD、OpenBSD、MacOS X以及Linux等。" 在UNIX系统编程中,`exec`函数族是一个至关重要的部分,它允许程序员在运行时加载并执行新的程序,而不会创建新的进程。现有的进程空间被新程序所占用,包括正文段(代码)、数据段(全局变量和静态变量)、堆和栈。这也就意味着`exec`并不会改变进程ID(PID),而是直接在当前进程中执行新程序。 `exec`函数族包括以下几个变体: 1. `execl`:以空终止的参数列表形式执行新程序,需要指定路径和参数。 2. `execv`:与`execl`类似,但它接受一个包含所有参数的数组。 3. `execlp`:与`execl`相似,但会在环境路径中查找文件。 4. `execle`:与`execl`相同,但还接受一个环境变量指针数组。 5. `execve`:最通用的形式,接收路径、参数数组和环境变量数组。 6. `execvp`:与`execlp`类似,但在环境路径中查找,并使用参数数组。 这些函数的共同特点是,如果执行成功,它们将不返回,因为当前进程已经被新程序接管。只有在执行失败时,才会返回到调用`exec`的代码,通常返回一个错误代码。 此外,内容还简述了UNIX操作系统的起源,由AT&T贝尔实验室的肯·汤普逊、丹尼斯·里奇和Douglas McIlroy开发,并介绍了它的三个主要派生版本:System V、Berkley和Hybrid。每个派生版本都有自己的特色操作系统,例如System V下的AIX、Solaris和HP-UX,Berkley下的FreeBSD、NetBSD和OpenBSD,以及MacOS X和Linux。 Linux作为现代开源操作系统的重要代表,也在UNIX家族谱中占有显著位置。Linux不仅应用于服务器和台式机,还在移动设备、路由器等各类硬件上广泛使用,其内核的先进性和灵活性使其成为全球许多领域的首选操作系统。