C 语言编程常见问题解答之系统调用
PC 中最主要的难题之一,也是最容易引起误解的,就是系统调用。系统调用所代表
——
的那些函数实际上是计算机的所有底层操作
屏幕和磁盘的控制,键盘和鼠标的控制 ,
文件系统的管理,时间,打印,这些只不过是系统调用所实现的一部分功能。
总的来说,系统调用往往涉及到 BIOS(基本输入输出系统)。实际中有好几种不同的
BIOS,例如主板的 BIOS 负责初始硬件检测和系统引导,VGA BIOS(如果有 VGA 卡的
话)处理所有的屏幕处理函数,固定磁盘 BIOS 管理硬盘驱动器,等等。DOS 是位于这些
低级 BIOS 之上的一个软件层,并且提供了进入这些低级 BIOS 的基本接口。一般说来,
这意味着有一个 DOS 系统调用可以调用几乎所有你想使用的系统功能。实际上,DOS 将
调用相应的一种低级 BIOS 来完成所要求的任务。在本章中,你将会发现你既可以调用
DOS 来完成一项任务,也可以直接调用低级 BIOS 来完成相同的任务。
14.1 怎样检索环境变量(environment variables)的值?
ANSI C 标准提供了一个名为 getenv()的函数来完成这项任务。getenv()函数很简单一把
指向要查找的环境串的指针传递给它,它就返回一个指向该变量值的指针。下面的程序说
明了如何从 C 中获得环境变量 PATH 的值:
# include <stdlib. h>
main(int argc, char * * argv)
{
char envValue[l29]; / * buffer to store PATH * /
char * envPtr = envValue ; / * pointer to this buffer * /
envPtr = getenv("PATH"); /* get the PATH */
printf ("PATH= %s\n" , envPtr) ; / * print the PATH * /
}
如果你编译并运行了这个程序,你就会看到与在 DOS 提示符下输入 PATH 命令完全
相同的结果。事实上,你可以用 getenv()检索 AUTOEXEC.BAT 文件中的或者系统引导
后在 DOS 揭示符下输入的所有环境变量的值。