background image

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