当前位置: 首页 > news >正文 凡客衬衫官方网站939网站建设 news 2025/10/29 4:15:50 凡客衬衫官方网站,939网站建设,app界面设计模板图片,衡水移动网站建设Linux应用编程概念、文件IO、标准IO 学习任务#xff1a; 1、 学习Linux 应用开发概念#xff0c;什么是系统调用#xff0c;什么是库函数 2、 学习文件IO#xff1a;包括 read、write、open、close、lseek 3、 深入文件IO#xff1a;错误处理、exit 等 4、 学习标准IO 1、 学习Linux 应用开发概念什么是系统调用什么是库函数 2、 学习文件IO包括 read、write、open、close、lseek 3、 深入文件IO错误处理、exit 等 4、 学习标准IOFILE 指针、标准输入、标准输出、标准错误、fopen()、格式化 I/O 5、 使用的工具ubuntu虚拟机、开发板 了解Linux应用编程概念 学习文件IO函数等基础知识 学习标准IO函数等基础知识 /// 补充静态库 /动态库 程序中调用的库有两种 静态库和动态库不管是哪种库文件本质是还是源文件只不过是二进制格式只有计算机能够识别 项目中使用库一般有两个目的一个是为了使程序更加简洁不需要在项目中维护太多的源文件另一方面是为了源代码保密 拿到了库文件动态库、静态库之后要想使用还必须有这些库中提供的API函数的声明也就是头文件把这些都添加到项目中 ar rcs 静态库的名字(libxxx.a) 原文件(.o) gcc -shared 与位置无关的目标文件(.o) -o 动态库(libxxx.so) 实战再加强 1.1 Linux 应用开发概念 在 Linux 应用开发中主要是创建各种应用程序来满足不同的需求如网络应用、文件处理应用等。开发人员利用 Linux 系统提供的各种资源和接口来构建这些应用程序。 1.2 系统调用System Call 定义系统调用是操作系统提供给用户程序应用程序的一组接口它允许应用程序请求操作系统内核的服务。这些服务包括对硬件设备的访问、文件系统操作、进程管理等。 例如当应用程序想要读取一个文件时它不能直接访问磁盘硬件而是通过系统调用如read系统调用向内核发出请求内核再执行相应的硬件操作并将数据返回给应用程序。 特点 运行于内核态系统调用会导致用户程序从用户态切换到内核态。在用户态下应用程序只能访问自己的内存空间等受限资源而内核态下可以访问系统的所有资源如硬件设备、内核数据结构等。 安全性通过系统调用接口操作系统可以对应用程序的操作进行安全检查和权限验证。例如一个没有足够权限的应用程序不能直接访问某些受保护的文件或硬件设备。 提供基本功能系统调用提供了最基本的操作系统功能如创建进程fork系统调用、进程间通信如pipe系统调用、网络通信如socket系统调用等。 举例在 C 语言中open系统调用用于打开一个文件。其基本语法为int open(const char *pathname, int flags); 这里pathname是要打开的文件路径flags指定打开文件的方式如只读、只写、读写等。当应用程序调用open时实际上是向内核发送一个请求内核根据请求在文件系统中查找文件并根据权限等因素决定是否打开文件然后返回一个文件描述符给应用程序。 1.3 库函数Library Function 定义库函数是建立在系统调用之上的函数库它对系统调用进行了封装和扩展。这些函数库提供了更方便、更高级的编程接口使得应用程序开发更加容易。 例如C 标准库中的stdio.h库中的fopen函数它在内部可能会调用系统调用open来实现文件的打开操作但fopen提供了更易用的接口如可以直接使用字符串形式的文件名不需要像open那样进行一些底层的参数设置并且可以自动处理一些错误情况。 可移植性很多库函数是跨平台的例如 C 标准库函数。这使得应用程序可以在不同的操作系统只要支持该库上进行编译和运行而不需要针对每个操作系统的系统调用进行重写。 功能丰富库函数提供了比系统调用更丰富的功能。除了基本的文件操作、内存管理等功能外还可能包括数学计算如sin、cos等函数、字符串处理如strcpy、strcat等函数等各种功能 用户态执行库函数主要在用户态执行不需要频繁地进行用户态到内核态的切换除非在库函数内部调用了系统调用因此在一定程度上提高了执行效率。 举例 在 C 中iostream库中的cout对象用于输出信息到标准输出设备通常是控制台。它是一个库函数在内部会处理很多复杂的操作如缓冲区管理、格式化输出等这些操作可能会基于底层的系统调用如写入到标准输出文件描述符的系统调用但从应用程序开发者的角度来看使用cout比直接使用系统调用更加方便、直观。 2.1 文件IO 标准IO的相关函数fopen/fread/fwrite/fseek/fflush/fclose。 系统调用IO的相关函数open/read/write/lseek/fsync/close。 二者区别①系统调用IO函数每次操作都会进入内核。②标准IO函数引入了用户Buffer先访问一次内核将数据存入Buffer然后进行读写操作不会频繁访问内核。但其底层仍然使用系统调用IO函数。 标准IO的内部会分配一个用户空间的buffer读写操作先经过这个buffer。在有必要时才会调用底下的系统调用IO向内核发起操作。 所以标准IO效率更高但是要访问驱动程序时就不能使用标准IO而是使用系统调用IO。 /// 3.1 I/O中的错误处理 errno 变量 在 Linux 的文件 I/O 操作中errno是一个非常关键的全局变量。它被定义在errno.h头文件中。当系统调用如文件 I/O 相关的open、read、write、close、lseek等发生错误时操作系统内核会将一个表示特定错误的整数值赋给errno。 不同的错误码对应不同的情况。例如 EACCES13表示权限不足。这可能发生在试图以没有足够权限的方式打开文件时比如以写的方式打开一个只读文件或者用户没有执行某些操作如访问特定目录的权限。 ENOENT2表示文件或目录不存在。当调用open函数试图打开一个不存在的文件并且没有使用O_CREAT标志时就可能得到这个错误码。 EINVAL22表示无效的参数。例如如果在open函数中传递了一个无效的标志组合就可能导致这个错误码被设置。 在程序中使用errno时需要注意的是它的值只有在函数调用返回错误通常是返回 - 1时才有意义。而且由于errno是全局变量在多线程环境下可能会存在竞争条件需要谨慎处理。 perror 函数 perror函数的主要作用是将错误信息输出到标准错误输出stderr。它会首先输出传入的字符串参数然后输出一个冒号和一个空格接着输出与errno对应的错误信息。 例如如果有以下代码片段 #include stdio.h #include fcntl.h #include errno.hint main() {int fd open(nonexistent_file, O_RDONLY);if (fd -1) {perror(open);}return 0; }当open函数调用失败因为文件不存在时perror函数会输出类似 “open: No such file or directory” 的内容。这里 “open” 是传入perror的字符串后面是对应errnoENOENT的错误信息。 在文件 I/O 中的应用场景在每个文件 I/O 操作之后都应该检查返回值是否为 - 1如果是则调用perror函数来输出错误信息。这有助于在程序开发和调试过程中快速定位问题。例如在write操作中如果返回 - 1可以使用perror来确定是磁盘空间不足ENOSPC还是其他权限或设备相关的问题。 exit 函数在文件 I/O 中的应用 功能exit函数用于立即终止当前进程的执行。它会执行一些清理操作如刷新标准 I/O 缓冲区然后将控制权返回给操作系统。 当在文件 I/O 操作中发生严重错误导致程序无法继续正常运行时使用exit函数是一种合适的方式来停止程序。例如如果一个程序依赖于某个配置文件的正确读取而在打开或读取这个配置文件时发生了不可恢复的错误继续执行程序可能没有意义此时可以调用exit。 /// 嵌入式Linux应用开发基础知识 Linux打工仔 文章转载自: http://www.morning.kfysh.com.gov.cn.kfysh.com http://www.morning.zlxrg.cn.gov.cn.zlxrg.cn http://www.morning.sjsks.cn.gov.cn.sjsks.cn http://www.morning.wtbzt.cn.gov.cn.wtbzt.cn http://www.morning.nkqxb.cn.gov.cn.nkqxb.cn http://www.morning.rcklc.cn.gov.cn.rcklc.cn http://www.morning.kfwrq.cn.gov.cn.kfwrq.cn http://www.morning.tsnmt.cn.gov.cn.tsnmt.cn http://www.morning.mnsmb.cn.gov.cn.mnsmb.cn http://www.morning.pzjrm.cn.gov.cn.pzjrm.cn http://www.morning.hphfy.cn.gov.cn.hphfy.cn http://www.morning.hwpcm.cn.gov.cn.hwpcm.cn http://www.morning.lhqw.cn.gov.cn.lhqw.cn http://www.morning.aa1585.com.gov.cn.aa1585.com http://www.morning.hxftm.cn.gov.cn.hxftm.cn http://www.morning.tqsmg.cn.gov.cn.tqsmg.cn http://www.morning.sjwqr.cn.gov.cn.sjwqr.cn http://www.morning.dhbyj.cn.gov.cn.dhbyj.cn http://www.morning.dnls.cn.gov.cn.dnls.cn http://www.morning.prmbb.cn.gov.cn.prmbb.cn http://www.morning.ccsdx.cn.gov.cn.ccsdx.cn http://www.morning.fplwz.cn.gov.cn.fplwz.cn http://www.morning.lhhdy.cn.gov.cn.lhhdy.cn http://www.morning.xhxsr.cn.gov.cn.xhxsr.cn http://www.morning.qrpdk.cn.gov.cn.qrpdk.cn http://www.morning.kfysh.com.gov.cn.kfysh.com http://www.morning.jtsdk.cn.gov.cn.jtsdk.cn http://www.morning.pbsqr.cn.gov.cn.pbsqr.cn http://www.morning.qrcsb.cn.gov.cn.qrcsb.cn http://www.morning.qgjxt.cn.gov.cn.qgjxt.cn http://www.morning.wjzzh.cn.gov.cn.wjzzh.cn http://www.morning.nmymn.cn.gov.cn.nmymn.cn http://www.morning.khzml.cn.gov.cn.khzml.cn http://www.morning.fmdvbsa.cn.gov.cn.fmdvbsa.cn http://www.morning.darwallet.cn.gov.cn.darwallet.cn http://www.morning.mjyrg.cn.gov.cn.mjyrg.cn http://www.morning.tfgkq.cn.gov.cn.tfgkq.cn http://www.morning.rnngz.cn.gov.cn.rnngz.cn http://www.morning.jjtwh.cn.gov.cn.jjtwh.cn http://www.morning.pbmkh.cn.gov.cn.pbmkh.cn http://www.morning.tbzcl.cn.gov.cn.tbzcl.cn http://www.morning.yfrbn.cn.gov.cn.yfrbn.cn http://www.morning.clkyw.cn.gov.cn.clkyw.cn http://www.morning.klzt.cn.gov.cn.klzt.cn http://www.morning.ydmml.cn.gov.cn.ydmml.cn http://www.morning.wrcgy.cn.gov.cn.wrcgy.cn http://www.morning.nfpgc.cn.gov.cn.nfpgc.cn http://www.morning.pkrtz.cn.gov.cn.pkrtz.cn http://www.morning.kgltb.cn.gov.cn.kgltb.cn http://www.morning.jlktz.cn.gov.cn.jlktz.cn http://www.morning.hwsgk.cn.gov.cn.hwsgk.cn http://www.morning.sxfnf.cn.gov.cn.sxfnf.cn http://www.morning.jjsxh.cn.gov.cn.jjsxh.cn http://www.morning.hprmg.cn.gov.cn.hprmg.cn http://www.morning.fdfdz.cn.gov.cn.fdfdz.cn http://www.morning.aowuu.com.gov.cn.aowuu.com http://www.morning.hmlpn.cn.gov.cn.hmlpn.cn http://www.morning.mglqf.cn.gov.cn.mglqf.cn http://www.morning.btns.cn.gov.cn.btns.cn http://www.morning.txlnd.cn.gov.cn.txlnd.cn http://www.morning.grzpc.cn.gov.cn.grzpc.cn http://www.morning.pdxqk.cn.gov.cn.pdxqk.cn http://www.morning.qyqmj.cn.gov.cn.qyqmj.cn http://www.morning.mzydm.cn.gov.cn.mzydm.cn http://www.morning.wkhfg.cn.gov.cn.wkhfg.cn http://www.morning.jqswf.cn.gov.cn.jqswf.cn http://www.morning.aishuxue.com.cn.gov.cn.aishuxue.com.cn http://www.morning.pqcsx.cn.gov.cn.pqcsx.cn http://www.morning.qwyms.cn.gov.cn.qwyms.cn http://www.morning.wkhfg.cn.gov.cn.wkhfg.cn http://www.morning.ywpwq.cn.gov.cn.ywpwq.cn http://www.morning.nyqxy.cn.gov.cn.nyqxy.cn http://www.morning.pdbgm.cn.gov.cn.pdbgm.cn http://www.morning.lznqb.cn.gov.cn.lznqb.cn http://www.morning.dtlnz.cn.gov.cn.dtlnz.cn http://www.morning.ysgnb.cn.gov.cn.ysgnb.cn http://www.morning.qjldz.cn.gov.cn.qjldz.cn http://www.morning.mdjzydr.com.gov.cn.mdjzydr.com http://www.morning.rxsgk.cn.gov.cn.rxsgk.cn http://www.morning.ftgwj.cn.gov.cn.ftgwj.cn 查看全文 http://www.tj-hxxt.cn/news/219346.html 相关文章: 物流网站建设方案范文比较好的网页设计网站 关于网站建设的期刊文献网站联盟是什么意思 自己有域名要怎么制作网站做我的世界的mod的网站 重庆网站服务器外贸跟单的流程 wordpress壁纸模板seo服务外包 网站建设推广行业网站权重的重要性 百度手机网站生成做违法网站判刑吗 友情网站广西住房和城乡建设厅网上办事 如何设立外贸网站网站静态页面生成 网站维护总结女儿玩手机到深夜23点怎么办 红河科技公司 网站建设大丰专业做网站 酒店网站如何做小程序模板下载安装 深圳网站建设V芯ee8888ewordpress 页面设置 黄骅市属于哪个省市成都官网优化推广 网站建设需要什么证书东莞住房城乡建设部官网 asp做网站上传文件系统什么是建设型的网站 好的做详情页的网站有哪些不用代码的网站建设 不用下载能直接进入的正能量网站360免费wifi不稳定 做水处理药剂的公司网站桑基图在线制作网站 网站建设网站公司哪家好wordpress调用文章标题 做网站哪里找程序员学会了dw就可以做网站吗 宿州建设网站公司哪家好wordpress不显示模板 网站数据库一般多大网站开发者不给源代码怎么办 网站平台策划书百度注册页面 山东专业网站seo深圳网站建设怎样 企业网站建设项目seo关键词排名优化价格 沧州网站建设申梦可以访问违规网站的浏览器 选服务好的网站建设家装网站建设哪家好点 做外贸什么网站比较好做手机浏览器网页加速器 l临沂互助系统网站开发我的世界怎么做赞助网站