如何使用系统调用

下面通过一个简单的例子来说明在用户程序中是如何使用系统调用的。例如,要写一个简单的程序,用于从一个文件中读出数据,再将该数据复制到另一文件中。为此,首先须输入该程序的输入文件名和输出文件名。文件名可用多种方式指定,一种方式是由程序询问用户两个文件的名字。

在交互式系统中,该方式要使用一系列的系统调用,先在屏幕上打印出一系列的提示信息,然后从键盘终端读入定义两个义件名的字符串。一旦获得两个文件名后,程序又必须利用系统凋用open去打开输入文件,并用系统凋用creat去创建指定的输出文件;在执行叩⑶系统调用时,又可能发生错误。

例如,程序试图去打开一个不存在的文件;或者该文件虽然存在,但并不允许被访问等。此时,程序又须利用一系列系统调用去显示出错信息,继而再利用一个系统凋用去实现程序的异常终止。类似地,在执行系统调用creat时,同样可能出现错误。例如,系统中存在与输出文件同名的另一文件,这时又须利用一系统调用来结束程序;或者利用一个系统调用来删除巳存在的那个同名文件,然后,再利用creat?泶唇ㄊ涑鑫募??/p>

在打开输入文件和创建输出文件都获得成功后,还须利用_请内存的系统调用alloc根据文件的大小申请一个缓冲区。成功后,再利用read系统凋用从输入文件中把数据读到缓冲区内,读完后,再用系统调用close去关闭输入文件。然后利用write系统调用,把缓冲区内的数据写到输出文件中。在读或写操作中,也都可能需要回送各种出错信息。

比如,在输入时可能发现已到达文件末尾(指定的字符数尚未读够),或者,在读过程中发现硬件故障(如奇、偶错);在写操作中可能遇见各种与输出设备类型有关的错误,比如,已无磁盘空间,打印机缺纸等。在将整个文件复制完后,程序又须凋用close去关闭输出文件,并向控制台回送一条消息以提示复制完毕。最后,再利用系统调用exit使程序正常结?c。

通过这个例子可以看出,一个用户程序将频繁地利用各种系统调用以取得OS所提供的各种服务。

(0)

相关推荐

  • Win7提示系统调用失败的原因及解决方法

    很多人在使用windows7的时候会遇到一些比较棘手的问题,一些对电脑不大熟悉的朋友们通常遇到问题就不知所措了,比如最近有一个朋友跟我会所他的电脑会出现系统调用失败的故障,出现这个问题的话有可能是资源 ...

  • Linux系统调用fsync函数详解

    功能描述: 同步内存中所有已修改的文件数据到储存设备。 用法: #include <unistd.h> int fsync(int fd); 参数: fd:文件描述词。 返回说明: 成功执 ...

  • 系统调用的类型

    根据系统调用的功能,可将其分为进程控制(类)的系统调用、进程通信(类)的系统调 用、文件操作(类)及设备管理(类)系统调用等。 进程控制类的系统调用 这类系统调用主要用于对进程的控制,如创建一个新的进 ...

  • 系统调用的基本概念

    操作系统在其核心中设置了一组用于实现各种系统功能的子程序(即过程),供应用程序调用。由于OS系统过程的特殊性,使应用程序不能采用一般的过程调用方式来调用这些过程,而是利用一种系统调用命令,去调用所需的 ...

  • 系统调用如何实现

    系统调用的实现与一般过程调用的实现相比,两者间有很大差异。对于系统调用,控制是由原来的用户态转换为系统态,这是借助于中断和陷入机制来完成的,在该机制中包括中断和陷入硬件机构及中断与陷入处理程序两部分。 ...

  • 解决Win7提示"系统调用失败"技巧

    系统调用失败故障图: 1、首先打开随意一款IE浏览器,然后在地址栏上面输入“C:windowsexplorer.exe”,然后回车即可解决。 2、如果还不行的话,就鼠标右击任务栏选择“启动任务管理器” ...

  • Win7系统提示"系统调用失败"的解决方法

    Win7系统提示“系统调用失败”的解决方法分享给大家,小编最近逛贴吧发现一些Win7系统用户反映,打开电脑后鼠标一直呈等待状,直到关机也是这样,打开计算机提示系统调用失败,而且桌面上所有图标都点不了, ...

  • win7系统出现"系统调用失败"该怎么办

    前不久,一位朋友打电话来求助:他刚使用Win7系统不久,但却遇到一个怪问题,按照通常的方式双击打开"计算机"(我的电脑)时,弹出"系统调用失败"的提示,这是怎么 ...

  • win7系统"系统调用失败"的两个解决方法

    方法一:使用IE浏览器 可以随便打开一个IE浏览器,在网址栏里面输入C:/windows/explorer.exe,然后就点击回车,这个方法其实还算是最简单的了,一般就可以解决问题的.不过也有的win ...