欢迎来到第壹文秘! | 帮助中心 分享价值,成长自我!
第壹文秘
全部分类
  • 幼儿/小学教育>
  • 中学教育>
  • 高等教育>
  • 研究生考试>
  • 外语学习>
  • 资格/认证考试>
  • 论文>
  • IT计算机>
  • 法律/法学>
  • 建筑/环境>
  • 通信/电子>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 第壹文秘 > 资源分类 > PPT文档下载
    分享到微信 分享到微博 分享到QQ空间

    Linux实验四.ppt

    • 资源ID:465322       资源大小:507.50KB        全文页数:19页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    账号登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,如果您不填写信息,系统将为您自动创建临时账号,适用于临时下载。
    如果您填写信息,用户名和密码都是您填写的【邮箱或者手机号】(系统自动生成),方便查询和重复下载。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Linux实验四.ppt

    实验四 插件框架版本1要求:开发一个程序,向屏幕打印“Hello World”;在不重新编译链接原程序的前提下,将打印的文字改为“Hello China”提示:使用动态链接库实现打印功能3动态库的编写 示例(4.1)动态库的编写#g+-fpic shared o libtest.so a1.cpp a2.cpp 生成libtest.so4动态库的使用 打开动态链接库#includevoid*dlopen(const char*file,int mode);参数file:动态链接库的文件名,包括路径信息mode:动态链接库的使用方式,例如RTLD_LAZY:动态的加入动态链接库中的函数返回值:引用动态链接库的句柄;出错返回NULL5动态库的使用 映射动态链接库中的函数#includevoid*dlsym(void*handle,const char*FuncName);参数handle:dlopen的返回值FuncName:动态链接库中的函数名返回值:FuncName函数被加载后,在进程地址空间中的地址;出错返回NULL6动态库的使用 查看出错原因#includechar*dlerror();返回值当dlopen、dlsym等函数出错时,dlerror返回字符串说明这些函数出错的原因7动态库的使用 卸载动态链接库#includeint dlclose(void*handle);参数handle:dlopen的返回值 动态库使用者的编译#g+-o test test.cpp ldl#test 出错?8运行出错的原因 动态库导出函数的变形 查看动态库导出的函数#nm libtest.so f函数实际上在动态库中的名字是:_Z1fv9实验四 插件框架 版本2要求:同时要打印“Hello World”,打印“Hello China”,甚至同时打印未来才会增加的其他打印信息打印未来的这些信息,也不能重新编译链接原程序 提示一种打印功能用一个动态链接库(插件)实现将这些 插件放置在固定的目录中,例如当前的plugin目录遍历这个目录,获取所有动态链接库读目录的基本操作打开目录(opendir)逐一读出目录项(readdir、rewinddir)关闭目录(closedir)opendir函数用于打开目录函数原型:#includeDIR*opendir(const char*pathname);返回值和参数返回值:返回打开目录的索引结构,出错返回NULLpathname:要打开的目录名readdir函数用于读取目录项函数原型:struct dirent*readdir(DIR*dp);参数与返回值dp:由opendir返回的返回值:dp对应的目录中包含的一个目录项readdir函数dirent结构struct dirent ino_t d_ino;/索引节点号 char d_nameNAME_MAX+1;/文件名 .获得目录下的所有文件DIR*dir;struct dirent *ptr;dir=opendir(/etc/rc.d);while(ptr=readdir(dir)!=NULL)printf(d_name:%sn,ptr-d_name);rewinddir函数用来设置目录流目前的读取位置为原来开头的读取位置函数原型void rewinddir(DIR*dp);参数dp:由opendir返回closedir函数用于关闭目录函数原型:int closedir(DIR*dp);参数与返回值dp:由opendir返回返回值:成功返回0,出错返回-117实验四 插件框架 版本3要求:版本2是同时调用所有插件的打印功能,现在要求一次只调用一种功能 提示3-1:通过命令行方式:./a.out help,输出所有插件实现的功能ID,以及该功能ID对应的功能描述(参考代码3)3-2:通过命令行方式:./a.out FuncID,调用具体打印功能(每个插件导出GetID接口)(参考代码4)18实验四 插件框架 版本4要求:在版本3中,插件导出了Print、GetID、Help三个函数,主程序需要使用多个容器分别保存这些函数地址在复杂的业务逻辑中,导出的函数可能更多,若还按照版本3的方式,代码维护性不佳 提示:将三个导出函数都放在一个类中,让插件外部获取该类的对象参考代码519综合练习 现在需要实现一个软件系统,该系统可对文件进行统计分析。究竟对文件进行什么样的统计分析,最终用户自己也不是很清楚,目前只知道需要统计文件的行数。也就是说,本软件系统将会随时面临,增加文件统计新功能的难题。请结合本实验内容,设计并实现这样一个面向文件统计功能的插件系统。(需要实现的插件包括:统计某个文件的行数,统计某个文件的字节数)

    注意事项

    本文(Linux实验四.ppt)为本站会员(p**)主动上传,第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知第壹文秘(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 1wenmi网站版权所有

    经营许可证编号:宁ICP备2022001189号-1

    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第壹文秘网,我们立即给予删除!

    收起
    展开