background image

语言编程常见问题解答之系统调用

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 揭示符下输入的所有环境变量的值。