第7篇 Linux环境编程 (5学时).ppt

  1. 1、本文档共70页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章 Linux环境编程 主要内容 系统调用和库函数简介 文件操作 进程管理和同步 进程通信 内存管理 7.1 系统调用和库函数 操作系统可以对外提供服务,并且通过不同的方式实现服务; 其中基本的两种服务方式就是: 系统调用 和 库函数 也是操作系统提供给用户的两种接口 7.1.1 系统调用 系统调用像普通C语言函数调用那样,出现在C语言程序中; 一般的函数调用不能把进程状态从用户态变为内核态,而系统调用却可以,并将进程上下文从用户堆栈切换到系统堆栈。 Linux的系统调用是通过中断指令实现的, 目前Linux系统中共定义了221个系统调用,所有的系统调用都在系统调用入口表中统一管理。 操作系统和系统调用的关系 操作系统负责直接与硬件交互,向用户程序提供公共服务,并使它们同硬件特性隔离; 系统调用: 是Linux操作系统向用户程序提供支持的接口, 通过这些接口,应用程序向操作系统请求服务,控制转向操作系统; 而操作系统在完成服务后,将控制和结果返回给用户程序。 在Linux系统中进程的两种运行模式: 高优先级的内核模式、低优先级的用户模式。 内核运行在高优先级; 其它外围软件包括shell,编辑程序等都是在低优先级运行。 系统调用可以看作是所有Linux进程共享的、在特权方式下运行子程序库, 系统调用的主要功能是: 使用户可以使用操作系统提供的有关设备管理、文件系统、进程控制、进程通讯、存储管理方面的功能, 而不必要了解操作系统的内部结构、有关硬件的细节问题, 从而减轻用户负担和保护系统以及提高资源利用率。 7.1.2 库函数 库函数解决一些共性问题,为程序开发和执行提供方便的环境。如:C语言中常用的fopen()函数就是标准I/O库中的库函数。 库函数可以分为下面六大类: ① 文件管理: 对文件、目录进行创建、删除等; ② 状态信息: 对日期、时间、内存容量等信息的格式化和存储 ③ 文件修改: ④ 程序设计语言的支持: ⑤ 程序装入和执行: ⑥ 通信: 在进程、用户和不同计算机系统之间,进行信息传送 7.2 文 件 操 作 常用的有关文件操作的系统调用有: creat,open,close,read,write,mkdir,rmdir,chdir 例: #include sys/types.h #include sys/stat.h #include fcntl.h int creat(const char *pathname, mode_t mode); #include sys/types.h #include sys/stat.h #include fcntl.h int open(const char *path, int oflags); int open(const char *path, int oflags, mode_t mode); 7.2.2 应用示例 #include unistd.h #include sys/types.h #include sys/stat.h #include fcntl.h #include stdlib.h #include stdio.h int main(void) { int fd1,fd2,fd3,nbytes; char buf[10]; if((fd1=open(“fileexp.c,O_RDONLY))0){ perror(open fileexp.c); exit(EXIT_FAILURE); } if((fd2=open(/dev/null,O_WRONLY))0){ perror(open /dev/null); exit(EXIT_FAILURE); } 进程控制块使用文件时的逻辑结构 7.3 进 程 控 制 7.3.1 有关进程控制的系统调用 在Linux中主要提供了fork、exec、clone的进程创建方法,sleep的进程睡眠和exit的进程退出调用; 另外Linux还提供了父进程等待子进程结束的系统调用wait。 操作系统可以对外提供服务,是通过两种不同的方式来实现:系统调用 和 库函数。 例如: #include unistd.h #include sys/types.h pid_t fork(voi

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档