UNIX进程与线程:环境与exec系统调用详解
1. 引言
在UNIX系统中,多任务处理是其核心特性之一。接下来我们将深入探讨如何使用 exec 、 fork 、 wait 等系统调用来调用程序和创建进程。我们的目标是逐步实现一个功能较为完整的命令解释器,也就是shell。首先从一个功能有限、勉强可用的shell开始,然后不断添加功能,最终使其能够处理I/O重定向、管道、后台进程、带引号的参数以及环境变量等。
2. 环境
在UNIX系统中,当一个程序被执行时,它会从调用它的进程那里接收两部分数据:参数和环境。对于C和C++程序来说,这两部分数据都以字符指针数组的形式存在,数组的最后一个指针为 NULL 。
C或C++程序的入口函数 main 有两种形式:
int main(
int argc,
/* argument count */
char *argv[]
/* array of argument strings */
)
int main(void)
其中, argc 表示参数的数量,但不包括终止 argv 数组的 NULL 指针。如果程序不需要参数,可以省略 argc 和 argv ,如第二种形式。
超级会员免费看
订阅专栏 解锁全文
1129

被折叠的 条评论
为什么被折叠?



