linux系统编程介绍

linux系统编程介绍

ID:20792097

大小:1.21 MB

页数:172页

时间:2018-10-15

linux系统编程介绍_第1页
linux系统编程介绍_第2页
linux系统编程介绍_第3页
linux系统编程介绍_第4页
linux系统编程介绍_第5页
资源描述:

《linux系统编程介绍》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Linux系统编程介绍第三章1本章目标系统编程与应用编程系统资源系统调用系统调用与C库关系错误处理2系统编程与应用编程系统编程在操作系统之上利用系统调用、C库进行对系统资源进行访问。如apache、gcc、gdb等应用编程在更高层次的编程接口或者库之上构建应用程序。如android程序(androidsdk)、iphone程序(iphonesdk)、QT程序设计(QT)MFC程序设计(MFC)等。3系统资源处理器输入输出进程管理内存设备定时器进程间通信网络4系统调用在系统中所处的位置所有操作系统都提供多种服务的入口点,由此程序向系统核请求服务。这些入口点被称之为系统调用

2、(systemcall),5C库这里我们所说的C库(libc),指的是标准C定义的C函数的集合。如标准输入输出函数、字符串处理函数、动态存储分配函数、日期时间函数、数学函数等。GNU发布的libc称为glibc6系统调用与C库关系系统调用与C库从形式上来看都C函数C库函数有些是调用系统调用来实现的,比如说malloc、free调用brk,printf调用write系统用,有些函数不需要任何系统调用,比如abs、strcpy、atoi等,因为它并不是必需要使用内核服务系统调用通常提供的是最小界面,而C库函数通常提供更复杂的功能。7内核如何处理系统调用每个系统调用被赋予一个

3、系统调用号在i386平台上,执行一个系统调用是通过int0x80指令完成的。eax存放系统调用号ebx、ecx、edx、esi、edi存储系统调用参数,对于超过5个参数的系统调用,用一个寄存器指向用户空间存储所有系统调用参数的缓存。8错误处理在系统编程中错误通常通过函数返回值来表示,并通过特殊变量errno来描述。errno这个全局变量在头文件中声明如下:externinterrno;错误处理函数perrorstrerror9错误代码E2BIG参数列表太长EACCESS权限不足EAGAIN重试EBADF错误的文件描述符EBUSY设备或资源忙ECHILD

4、无子进程EDOM数学参数不在函数域内EEXIST文件已存在EFAULT地址错误EFBIG文件太大EINTR系统调用被中断...10文件与I/O(一)第四章11本章目标什么是I/O文件描述符文件系统调用12什么是I/O输入/输出是主存和外部设备之间拷贝数据的过程设备->内存(输入操作)内存->设备(输出操作)高级I/OANSIC提供的标准I/O库称为高级I/O,通常也称为带缓冲的I/O低级I/O通常也称为不带缓冲的I/O13文件描述符对于Linux而言,所有对设备或文件的操作都是通过文件描述符进行的。当打开或者创建一个文件的时候,内核向进程返回一个文件描述符(非负整数)。

5、后续对文件的操作只需通过该文件描述符,内核记录有关这个打开文件的信息。一个进程启动时,默认打开了3个文件,标准输入、标准输出、标准错误,对应文件描述符是0(STDIN_FILENO)、1(STDOUT_FILENO)、2(STDERR_FILENO),这些常量定义在unistd.h头文件中。14文件描述符与文件指针转换fileno:将文件指针转换为文件描述符fdopen:将文件描述符转换为文件指针15文件系统调用open系统调用close系统调用creat系统调用read系统调用write系统调用16open系统调用2-1有几种方法可以获得允许访问文件的文件描述符。最常

6、用的是使用open()(打开)系统调用函数原型intopen(constchar*path,intflags);参数path:文件的名称,可以包含(绝对和相对)路径flags:文件打开模式返回值打开成功,返回文件描述符;打开失败,返回-1open系统调用2-2函数原型intopen(constchar*path,intflags,mode_tmode);参数path:文件的名称,可以包含(绝对和相对)路径flags:文件打开模式mode:用来规定对该文件的所有者,文件的用户组及系统中其他用户的访问权限返回值打开成功,返回文件描述符;打开失败,返回-1打开文件的方式打开方

7、式描述O_RDONLY打开一个供读取的文件O_WRONLY打开一个供写入的文件O_RDWR打开一个可供读写的文件O_APPEND写入的所有数据将被追加到文件的末尾O_CREAT打开文件,如果文件不存在则建立文件O_EXCL如果已经置O_CREAT且文件存在,则强制open()失败O_TRUNC在open()时,将文件的内容清空所有这些标志值的符号名称可以通过#include访问访问权限打开方式描述S_IRUSR文件所有者的读权限位S_IWUSR文件所有者的写权限位S_IXUSR文件所有者的执行权限位S_IRWXUS_IR

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。