注册 登录
编程论坛 C++教室

[求助]C语言程序如何调用操作系统提供的系统调用函数

huangyinghua 发布于 2007-02-09 20:22, 3455 次点击
大家好!我学了C语言基础知识,还学了操作系统的一些基础知识,有个问题不懂,操作系统中说的系统调用和C语言中的库函数是不同的,那么C语言程序如何才能调用操作系统中提供的系统调用函数呢?为什么C语言编程的书都没有讲到?C语言编程的书都只讲到如何调用C语言的库函数而已,请大家给指点,谢谢了!
7 回复
#2
corrupt2007-02-11 10:03
你说的是 api函数吧??  包括 头文件 #include <windows.h>
#3
huangyinghua2007-02-13 19:36

corrupt谢谢你,但我还不是很明白,操作系统的系统调用都是api函数吗?另外你能不能取一个具体的函数调用的例子,我想看看具体的书写格式是怎样的?还有,是不是每种语言程序(如B语言、C++语言等)中调用api函数的书写格式都一样的呢?谢谢了!

#4
bluesky13222007-02-14 23:36

应该不同的操作系统的系统函数不一样,不过WINDOWS XP下是调用API,头文件就是include<windows.h>.
API里面有成千上万的函数呢,如果是编写的控制台界面的话,我想控制台函数调用的挺多,我就是这样的。
用的时候只需要在程序中调用函数就行了,比如(C++编译环境为VC6.0):

#include<windows.h>

void SetConsole()
{
CONSOLE_SCREEN_BUFFER_INFO bInfo;//窗口缓冲区信息
GetConsoleScreenBufferInfo (hOut,&bInfo);//获取窗口缓冲区信息

//SetConsoleOutputCP(437);
SetConsoleTitle ("This is the console title.");//设定窗口标题
COORD size = {80,25};
SetConsoleScreenBufferSize (hOut,size);//设定缓冲区大小为80*25
SetConsoleTextAttribute(hOut,371);

COORD posBackground = {0,0};
//背景设置为蓝底暗白文字
int i;
for(i=0;i<25;i++)
{
FillConsoleOutputAttribute(hOut,340,80,posBackground,NULL);
posBackground.Y ++;
}

}
void mian()
{
HADLE hOut;//输出设备句柄
hOut = GetStdHandle (STD_OUTPUT_HANDLE);//获得标准输出设备句柄
SetConsole();
}

其中:CONSOLE_SCREEN_BUFFER_INFO是控制台屏幕缓冲区信息结构体
COORD是屏幕坐标结构体
SetConsoleScreenBufferSize()等都是一些操作函数,具体的可以看看MSDN,
函数的意思一看就知道了。

[此贴子已经被作者于2007-2-14 23:41:03编辑过]

#5
huangyinghua2007-02-17 14:57
谢谢bluesky1322和corrupt!
唉呀救命,真是晕啊,为什么我学完了相关的大学课程怎么还是看不太懂你们上面所写的,什么“句柄”“窗口缓冲区”“信息控制台屏幕缓冲区信息结构体”?这些名词都没见过,我想肯定是我那些课程太老土了,还麻烦两位给推荐一两本好书,适合我这样的初学者的,一定要浅显易懂的,但内容也要全面,别象我那些书连怎么调用函数都不介绍,害我好茫然,拜托两位了,我很想学些实用的东西,知道这方面的人士也请多给指点,谢谢了!
#6
dlcdavid2007-02-20 21:25
MFC window程序设计 第2版,,
#7
bluesky13222007-02-21 14:55
对啊,论坛里有一本由iteer上传的“Windows程序设计(第五版)电子版”,看看这里


[URL=http://bbs.bc-cn.net/viewthread.php?tid=87361&star=at#]http://bbs.bc-cn.net/viewthread.php?tid=87361&star=at#[/URL]

[此贴子已经被作者于2007-2-21 14:55:35编辑过]

#8
huangyinghua2007-02-24 19:43
谢谢大家!
1