c语言编程暂停的系统调用,C语言编程常见问题解答之系统调用.doc

news/2024/10/20 6:24:21/

C语言编程常见问题解答之系统调用,c语言函数调用,java调用c语言,c语言调用dll,python调用c语言,c语言调用汇编函数,c语言中函数的调用,c语言调用matlab函数,c语言函数的调用,c语言递归调用

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 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揭示符下输入的所有环境变量的值。??? 这里有一个小技巧。当运行Windows时,Windows设置了一个名为WINDIR的新的环境变量,它包含了Windows目录的路径全名。下面这段简单的程序用来检索这个串:# include main(int argc, char * *? argv){??? char envValue[l29];??? char *? envPtr = envValue ;?? envPtr = getenv("windir");??? / * print the Windows directory * /??? printf("The Windows Directory is? %s\n" ,? envPtr);}??? 这个程序还可以用来判断当前是否正在运行Windows,以及DOS程序是否运行在一个DOS shell下,而不是运行在“真正的"DOS下。注意,程序中的windir字符串是小写——这一点很重要,因为它对大小写是敏感的。如果你使用WINDIR,getenv()就会返回一个NULL串(表示变量未找到错误)。??? 用一putenv()函数也可以设置环境变量。但要注意,该函数不是一个ANSI标准函数,在某些编译程序中它可能不以这个名字出现,或者根本就不存在。你可以用一putenv()函数做许多事情。实际上,在上面那个例子中,Windows正是用这个函数创建了windir环境变量。

请参:??? 14.2? 怎样在程序中调用DOS函数???? 14.3? 怎样在程序中调用BIOS函数?

14.2? 怎样在程序中调用DOS函数?? ? 其实,当调用printf(),fopen(),fclose(),名字以一dos开始的函数以及很多其它函数时,都将调用DOS函数。Microsoft和Borland还提供了一对名为int86()和int86x()的函数,使你不仅可以调用DOS函数,还可以调用其它低级函数。用这些函数可以跳过标准的C函数而直接调用DOS函数,这常常可以节省你的时间。下面的例子说明了如何通过调用DOS函数,而不是getch()和printf()函数,从键盘上得到一个字符并将其打印出来(该程序需要在大存储模式下编译)。# include # include char GetAKey


http://www.ppmy.cn/news/351294.html

相关文章

超级vga显示卡_VESA 编程介绍(一)标准VGA BIOS及超级VGA模式号

VESA编程介绍 (1)标准VGA BIOS及超级VGA模式号 --------------------------------------------------------------------------------- 相关章节: (1): 标准VGA BIOS及超级VGA模式号 (2):CPU显存控制 (3):扩展的VGA BIOS (4): 扩展的VGA BIOS(续)及应用举例 ----------------…

鼠标绘图 c语言,c语言高级编程技术教程 图形显示方式与鼠标输入.doc

c语言高级编程技术教程 图形显示方式与鼠标输入 c语言高级编程技术教程 图形显示方式和鼠标输入 图形显示方式和鼠标输入 问题的提出编写程序,使用鼠标进行如下操作:按住鼠标器的任意键并移动,十字光 标将随鼠标而移动,根据按键的不同采用不同的形状来画出相应的移动轨迹:…

C语言图形编程中的绘图函数~

一、屏幕和视口设置与清除函数 36. setviewport() 设置图形视口函数 37. clearviewport()清除图形视口函数 38. cleardevice() 清除屏幕函数 39. getviewsettings() 获取图形视口设置函数 二、调色板和颜色函数 40. setpalette()设置调色板函数 41. se…

C语言编程之利用ellipse and rectangle 画图

问题描述:利用ellipse and rectangle 画图。 程序源码: #include "stdio.h" #include "graphics.h" #include "conio.h" void main() { int driverVGA,modeVGAHI; int i,num15,top50; int left20,right50; initgraph(&a…

c语言图形方式初始化,c语言图形方式下的编程.doc

c语言图形方式下的编程.doc C语言图形方式下的编程 学习目标 了解PC显示系统的结构 C语言图形初始化的一般方法 C语言常用的图形处理函数 显示系统简介 PC机显示系统一般是由显示器和显示卡组成。显示器(Monitor)是独立于主机的一种外部设备。显示卡(Adapter)是插在Pc主机上的一…

经典C语言编程100例——题目+答案代码(51-60)

【程序 51】 题目:学习使用按位与 & 。 1.程序分析:0&00; 0&10; 1&00; 1&11 2.程序源代码: #include "stdio.h" main() { int a,b; a077; ba&3; printf("\40: The a & b(decimal) is %d \n&quo…

在C语言中 以32位PC,自制操作系统(十)| 进入32位模式并导入C语言

前期准备 16位模式启动的话,用AX和CX等16位寄存器会非常方便,但反过来,像EAX和ECX等32位的寄存器,使用起来就很麻烦。另外,16位和32位模式中,机器语言中的命令代码不一样。同样的机器语言,解释的…

大学c语言基础 Turbo C2.0 (32位/64位通用)

大学c语言基础 Turbo C2.0 (32位/64位通用) 2.0此软件自带dos虚拟环境 介绍 Turbo C2.0不仅是一个快捷、高效的编译程序,同时还有一个易学、易用的集成开发环境。使用Turbo C2.0无需独立地编辑、编译和连接程序,就能建立并运行C语言程序。因为这些功能…