Linux高级编程实验实验4报告
电子科技大学
实验报告
学生:学号:指导教师:林
实验地点:清水河主楼A2-412 实验时间:
一、实验室名称:
Linux环境高级编程实验室
二、实验项目名称:
插件框架实验
三、实验学时:
4学时
四、实验目的:
实践Linux环境下插件框架的开发。
学习并掌握插件的工作原理。
五、实验容:
●1、使用动态库实现打印功能
开发一个程序,向屏幕打印“Hello World”;在不重新编译原程序的前提下,将打印的文字改为“Hello China”。
●2、使用动态库实现自定义打印功能
同时要打印“Hello World”,打印“Hello China”,甚至同时打印未来才会增加的其他打印信息。
打印未来的这些信息,也不能重新编译原程序。
●3、一次只调用一种功能
通过命令行方式:./a.out help,输出所有插件实现的功能ID,以及该功能ID对应的功能描述(参考代码3)
通过命令行方式:./a.out FuncID,调用具体打印功能(每个插件导出GetID接口)(参考代码4)
●4、导出函数都放在一个类中
在版本3中,插件导出了Print、GetID、Help三个函数,主程序需要使用多个容器分别保存这些函数地址。
在复杂的业务逻辑中,导出的函数可能更多,若还按照版本3的方式,代码维护性不佳。
将三个导出函数都放在一个类中,让插件外部获取该类的对象
六、实验步骤:
版本1
程序代码如图1.1、图1.2、图1.3所示(程序是在Linux图形界面截取的,本人的Ubuntu在字符界面无法显示中文注释):
图1.1 功能函数
图1.2 hello world函数
图1.3 主函数
首先,使用命令#g++ -fpic –shared –o function.so helloworld.cpp function.cpp将helloworld.cpp和function.cpp 编写成动态库function.so。
如图1.4所示:
图1.4 动态库的编写
然后,再进行动态库使用者的编译,命令是#g++ -o main main.cpp –ldl,如图1.5所示。
图1.5 动态库使用者
图中显示了两次运行结果,但是第一次是hello world,第二次是hello baby。
这很好地体现的动态的特性。
版本2
代码如下:
图2.1 main
图2.2 hello yanyumin函数
图2.3 hello YANYUMIN函数
该函数实现了,同时要打印“Hello yanyumin”,打印“Hello YANYUMIN”,没有重新编译原程序。
运行结果如下图2.4所示。
图2.4 运行结果版本3-2
程序代码如下:
图3.1 main.cpp
图3.2 function1.cpp
图3.3 function.cpp
此外,还有CPluginController.cpp和CPluginEnumerator.cpp,里面存放的都是main函数调用的子函数,在main里有注释,所以便不再赘述。
运行结果如下:
图3.4 运行过程与结果版本4
主要程序代码如下:
图4.1 main.cpp
图4.2 IPrintPlugin.cpp
图4.3 function1.cpp
图4.4 function.cpp
这种方式采用将三个导出函数都放在一个类中,让插件外部获取该类的对象。
编译运行结果如下:
. .
.. .. 图4.5过程及结果
七、总结及心得体会:
本次实验主要是学习插件的开发和使用,通过不同的思想对不同插件进行编程,打开了我的思维,增加了我对插件编程的灵活性的掌控。
八、对本实验过程及方法、手段的改进建议:
这次做实验的过程有点紧凑,实验代码有的部分不是很理解(相关知识掌握不清晰),建议老师能在上堂课结束后提示一下本堂课的主要容,便于我们课后查阅提前准备。
总的来说,收获很大。
报告评分:
指导教师签字:。
操作系统实验04 Linux 多进程编程
《操作系统》实验报告实验序号:实验四实验项目名称:实验04 Linux 多进程编程学号1207022103 姓名陈华荣专业、班网络工程实验地点实1-311 指导教师李桂森实验时间2014.10.26一、实验目的及要求1.通过本实验的学习,使学生掌握Linux多进程编程的基本方法。
2.实验内容:利用Linux多进程实现题目所要求的功能。
3.以学生自主训练为主的开放模式组织教学二、实验设备(环境)及要求PC机三、实验内容与步骤1、编写一个显示“HELLO”的c语言程序,并利用GCC编译,然后运行此程序。
(提示:若没有gcc,需先安装gcc编译程序)指令:Apt-get install updateApt-get install gccCd /home/normaluesrTouch helloworld.cVim helloeorld.c在helloworld里编辑进:#include<stdio.h>Int main(){Printf(“helloworld”);Return 0;}然后用gcc进行编译运行:或者直接2、进程的创建:编制一程序,利用系统调用fork()创建两个子进程。
程序运行时,系统中有一个父进程和两个子进程活动,分别让他们显示“A”、“B”和“C”,分析程序运行结果。
3、用ctrl+alt+F2切换到第二个终端(tty2)并使用另外一个用户登录(可利用第二个实验创建的用户登录),然后使用who命令查看用户登录情况。
用ctrl+alt+F1切换到第二个终端(tty1),修改第二步的程序,在每个进程退出前都加上一个sleep(20)的函数来延缓进程的退出,然后运行此程序,立即切换到tty2,使用ps -a命令查看系统运行的进程,观察程序创建的进程都有哪些?pid是多少?4、进程的管道通信:编制一程序,使用系统调用pipe()建立一管道,两个子进程P1和P2分别向管道各写一句话,父进程则从管道中读取出来并显示在屏幕。
linux4
实验(实习)名称常用命令使用实验(实习)日期指导教师专业年级班次姓名学号得分一、实验目的1.掌握C语言编译的基本用法。
2.掌握gdb调试工具的基本用法。
3.理解make工具的功能,学会编制makefile的方法。
二、实验内容1.利用gcc编译C语言程序,使用不同选项,观察并分析显示结果。
2.用gdb调试一个编译后的C语言程序。
3.编写一个有多文件构成的C语言程序,编写makefile,运行make工具进行维护。
三、主要实验步骤1.改写例6.1,使用下列选项对它进行编译:-I,-D,-E,-c,-o,-l。
2.完成对思考题6.5的调试。
#include<stdio.h>#include<stdlib.h>#include<string.h>int main(int argc,char **argv){char *p;int i;p=malloc(60);strcpy(p,"not 30 bytes");printf("p=<%s>\n",p);if(argc==2){if(strcmp(argv[1],"-b")==0)p[0]='a';else if(strcmp(argv[1],"-f")==0){p[0]='b';}}printf("p=<%s>\n",p);free(p);return 0;}运行结果如下:[LinyunGu@localhost subdir]$ ./badprog -bp=<not 30 bytes>p=<aot 30 bytes>[LinyunGu@localhost subdir]$ ./badprog -fp=<not 30 bytes>p=<bot 30 bytes>3.完成对思考题6.6的调试。
linux实验报告
linux实验报告实验目的:通过对Linux操作系统的实践,掌握基本的Linux命令和操作方法,了解Linux操作系统的特点和优势。
实验一:Linux环境搭建在实验一中,我们首先需要搭建Linux操作系统的环境。
根据实验指导书的要求,我们选择了Ubuntu作为实验平台。
通过下载Ubuntu镜像文件,并利用虚拟机软件创建一个虚拟机,将镜像文件安装到虚拟机中。
在安装过程中,我们需要选择合适的分区和网络配置等,并设置root用户的密码。
实验二:基本命令的使用在实验二中,我们主要学习了Linux的基本命令的使用方法。
首先,我们了解了Linux文件系统的结构,包括根目录、用户目录、系统目录等。
然后,通过命令行终端进行一系列的实践操作,比如查看文件内容、创建目录、复制文件等。
这些命令的使用不仅提高了我们的工作效率,同时也增强了对Linux操作系统的理解。
实验三:软件安装与卸载实验三主要涉及到Linux的软件安装与卸载。
我们首先学习了使用APT工具进行软件包管理,通过安装命令行界面的方式安装了一些常用的软件,比如文本编辑器、终端工具等。
此外,我们还学习了如何卸载已安装的软件包,清理不需要的文件,以保持系统的整洁性。
实验四:权限管理在实验四中,我们学习了Linux的权限管理机制。
Linux操作系统采用了基于用户和组的权限模型,通过设置文件和目录的权限,实现对文件的读、写、执行的控制。
我们通过实际操作,创建了新的用户和组,并为不同的用户和组设置了不同的权限。
这样,可以有效地保护系统的文件和数据的安全性。
实验五:网络配置与服务搭建在实验五中,我们主要学习了Linux的网络配置和服务搭建。
通过设置网络接口、IP地址和网关等参数,实现了网络的正常连接。
同时,我们还学习了一些常用的网络命令,比如ping、ssh等。
此外,我们尝试搭建了一个简单的Web服务器,通过浏览器访问,可以查看服务器上的网页。
实验六:系统监控和故障恢复在实验六中,我们学习了Linux的系统监控和故障恢复方法。
Linux环境下 C语言编程实验报告
西安邮电大学(计算机学院)课内实验报告实验名称: Linux环境下 C语言编程专业名称:网络工程班级:1203班学生姓名:学号(8位):指导教师:王亚刚实验日期:2014年12月3日一、实验目的(2)掌握gcc编译器使用方法。
(3)掌握gdb调试方法。
二、实验内容1.编辑测试源代码。
2. gcc编译测试源代码3. gdb调试和排错。
三、实验步骤1.编辑如下参考源代码,代码的原意为倒序输出main函数中定义的字符串#include <stdio.h>int display1(char *string);int display2(char *string);p iint main (){char string[] = "nnWelcom to Linux";display1 (string); display2 (string);}int display1 (char *string){printf ("The original string is %s \n", string);}int display2 (char *string1){char *string2;int size,i;size = strlen (string1);string2 = (char *) malloc (size + 1);for (i = 0; i < size; i++)string2[size - i] = string1[i];string2[size+1] = ' ';printf("The string afterward is %s\n",string2);}2.使用gcc将参考源代码编译为可执行文件。
3.运行可执行文件,观察运行结果并记录。
4.使用gdb调试程序,通过设置断点、单步跟踪,找出错误原因并记录。
linux编程实验报告
linux编程实验报告Linux编程实验报告一、引言在计算机科学领域中,Linux操作系统一直以其开源、稳定和灵活的特性而受到广泛关注和使用。
作为一名计算机科学专业的学生,我有幸参与了一项关于Linux编程的实验,并在此报告中分享我的实验结果和心得体会。
二、实验目的本次实验的目的是通过编写Linux程序,熟悉Linux操作系统的基本命令和编程环境。
具体而言,我们需要使用C语言编写一个简单的程序,实现文件的读取、写入和修改等功能,并在Linux环境下进行测试和验证。
三、实验过程1. 环境准备在开始实验之前,我们首先需要确保已经安装了Linux操作系统,并具备基本的命令行操作能力。
此外,我们还需要安装C语言编译器,以便能够编译和运行我们的程序。
2. 编写程序根据实验要求,我们需要编写一个程序,实现文件的读写功能。
在编写程序之前,我们先进行了详细的需求分析和设计,确定了程序的基本架构和功能模块。
3. 调试和测试在编写完程序之后,我们进行了一系列的调试和测试工作,以确保程序的正确性和稳定性。
我们使用了一些常见的测试用例,包括读取已存在的文件、写入新文件以及修改已有文件等情况,并对程序的输出结果进行了验证。
四、实验结果经过多次的调试和测试,我们最终得到了一个功能完善、稳定可靠的程序。
该程序能够准确地读取、写入和修改文件,并能够处理各种异常情况,如文件不存在、权限不足等。
五、实验心得通过参与这次实验,我收获颇多。
首先,我对Linux操作系统的理解更加深入了。
在实验过程中,我学会了使用Linux的命令行工具,熟悉了Linux的文件系统和权限管理机制。
其次,我对C语言的编程能力也得到了提升。
在编写程序的过程中,我学会了使用C语言的文件操作函数和错误处理机制,提高了自己的编程技巧。
此外,我还意识到编程实践的重要性。
通过亲自动手编写程序,我不仅仅是理论上了解了Linux的一些特性,更重要的是深入了解了其背后的设计原理和实现细节。
linux实验报告总结-共10篇
∣inux实验报告总结(共10篇)(Linux实验报告汇总)(一)Shell 编程一、实验目的:1)掌握在Linux下的C编程基本方法。
2)掌握shell编程方法。
3)掌握dialog图形化编程方法。
二、实验内容1、编写能输出“Hello world!”问候语的C程序,并在终端中编译、执行。
要求记录所使用的命令及结果。
#include stdio.hmain()(printf(Hello world!\n);)2、编写一个C程序并设置其在后台执行,其功能是在一段时间后(可自行设置),在屏幕上显示信息:Time for play!,写出相应的程序、命令及结果。
#include stdio.hmain()(int time=0;printf(请输入等待时间(单位:s):);scanf(%d/&time);sleep(time);printf(Time for play!\n);)3、编写C程序,求1到100之间整数的阶乘和,并对程序进行优化。
写出程序、命令和结果。
#include stdio.hmain()int i;double s = l,sum = 0;for( i= l;i= 100;i++)sum+=s*=i;printf( 1到100之间整数的阶乘和:%f\n,sum);printf( 1到100之间整数的阶乘和:%e\n,sum);}4、编写C程序,根据键盘输入的半径求圆面积,要求在命令行周率(P∣=3∙14,PI=3∙14159,PI=3.14159626 等)进行编使用不同的译,写出程序、命令和结果。
#include stdio.hint main()double r = 0.0 , Area = 0.0;printf(请输入半径:);scanf(%lf, &r);Area = PI * r * r;printf(圆面积:%f∖n, Area);)5、编写shell程序sh.l,完成向用户输出“你好!”的问候语。
linux程序设计实验报告
linux程序设计实验报告《Linux程序设计实验报告》在计算机科学领域,Linux操作系统一直是一个备受关注的话题。
作为一个开源的操作系统,Linux拥有强大的稳定性和灵活性,因此在各种领域都得到了广泛的应用。
本次实验报告将介绍我在Linux程序设计实验中的一些经验和收获。
实验一:环境搭建在实验的第一部分,我们需要搭建Linux操作系统的开发环境。
我选择了Ubuntu作为我的开发平台,并安装了gcc编译器和其他必要的工具。
在这个过程中,我学会了如何在Linux系统中安装软件包,配置环境变量以及使用命令行工具进行开发。
实验二:基本程序设计在这一部分,我们需要编写一些简单的程序来熟悉Linux系统的编程环境。
我选择了C语言作为主要的开发语言,因为在Linux系统中C语言是最常用的编程语言之一。
通过编写一些简单的程序,我学会了如何在Linux系统中进行编译、链接和调试。
实验三:文件操作在Linux系统中,文件操作是一个非常重要的部分。
在这个实验中,我们需要编写一些程序来进行文件的读写操作。
我学会了如何使用系统调用来打开、读取和写入文件,以及如何处理文件操作中可能出现的错误。
实验四:进程管理Linux系统是一个多进程的操作系统,因此进程管理是一个非常重要的主题。
在这个实验中,我学会了如何创建新进程、进行进程间通信以及处理进程的状态变化。
通过编写一些简单的多进程程序,我加深了对Linux系统进程管理的理解。
总结通过这次实验,我对Linux系统的程序设计有了更深入的了解。
我学会了如何搭建开发环境、进行基本的程序设计、进行文件操作以及进行进程管理。
这些知识不仅对我未来的学习和工作有着重要的意义,也为我进一步深入学习Linux 系统打下了坚实的基础。
希望通过不断的实践和学习,我能够在Linux系统的程序设计领域有所建树。
中南大学linux程序设计环境实验四(DOC)
实验4 Linux高级程序设计1、实验目的(1) 了解Linux操作系统下应用程序开发流程⑵掌握gun工具链的使用(3) 了解Linux高级编程技巧(例如IPC机制、系统调用等)2、实验内容(1) 编写一个简单的C语言程序,编写Makefile文件。
了解编译过程,并用gdb 进行调试。
(2) 编写一段程序,适用系统调用fork()创建两个新的子进程,此程序运行使系统中有三个活动进程存在。
控制让一个进程在屏幕上显示一个字符:父进程显示“a”,子进程分别显示字符“ b”和字符“ c”。
试观察屏幕上的显示结果,并对输出结果进行分析。
在实验报告中写出说明和分析。
(3) 编写一段程序实现父进程创建一个子进程,通过系统调用使子进程和父进程执行不同的任务。
(提示:利用system(), exec系列函数)试思考,怎样实现进程间的同步?(4) 编写一段C程序完成:父进程创建一个子进程,父进程对子进程设置一个报警信号,然后父进程等待子进程的结束,如果此时报警信号先到,就终止子进程。
3、实验要求(1) 写出源程序,并编译运行(2) 详细记录程序调试及运行结果4、实验思路及过程(1)File Edit View Terminal labs 旦白p[qinpengchengfasoftware -]i su - Password :[root@software [root^software [root@software [root^software [root@softwareT# cd / /]# mkdir c/]# cd /c cvl makefileG# |[root(0software c]# make * f makefilemake: *** No rule to make target 'main.c ', needed by 'main,o Stop.[rootfBsof tware [root(3sof twa re [root (asof tware [root^software [root(3sof twa re[root (asof tware c]# touch a.h c]# touch b,h c]# touch c.h 匚]軒vi main.匚 c]# vi l.c Cj# Vl 2.Cmakefile 文件:□ makefile xmyapp: main.o 1.o 2.o| gcc -o myapp main.o 1.o 2.o mai ri.o: main . c a . hgcc - c mai n * cl.o:1.c a.h b.hgcc -c 1.c2*o: 2.匸b.h c.hgcc -c 2.cmain .c 文件:口main.c x/* main * c */#include <stdio.h>#include <stdl|ib. h>#inelude n a.h"extern void fun匚tncm_onE(); externvoid fun匚tion_twa();int main(){function_one();function_two();exit(E X T TSUCCESS);} _,,a r h ,,<stdio F h> <stdlib.h>void function_one(} {printf (p,fuinction_one....2. c 文件:O2.C K7^ 2.匚#include "b.h #include "c.h #include <stdio ・ h>#incl.ude <stdlib ・ 2 void function_two() {printf (unction_two …”}-o 写成-c ,函数库导入不正确:[root(8software cl# make -T makefile-c main.c -cIn function 1 fun 匚tlort one1. c:6: warning: incompatibLe implicit dm 匚laration of built-in function gcc -c2.c 2. 匸:In function J function two*:2.c:6: warning : incompatible implicit declaration of built'in function gcc -c myapp main.o l.o 2・D gcc: inyapp : No such file or directory make: *** [myapp] Error 1IT J_ J *"L一一 _£ Ji— F lil ■[root@software c]# vi 2,c [root^software c ]# vi main.c[root@software t]# make -f makefile gcc *c main,c gcc -cgcc *c 2・匸gcc -o myapp main.o 1k o 2.o [root^software c |1.c 文件:^include # include ^include # i nclud 色printfprintf[root (asoftwa re c" " -1 total 80 -rw ” r- ” r-- 1 roo t root 132 J^rt 1 68 461 -rw -r- -r-- 1 root root 860 Jan 1 08 47 1,0r Y —— 1 root root 133 Jan 1 68 46 2.C -rw - r- -r-- 1 root root 866Jan 1 08 47 2. o -rw - r- -r-- 1 root root e Dec 31 18 57 a .h -rw - 「▼-「▼-1 root root 0 Dec 31 18 57 b.h -rw - r- -r-- 1 root root 0 Dec 31 18 58 c ,h 亠rw r-1 root root 197 Jan 1 08 47 maln -rw ” r- -r-- 1 root root 856 Jan 1 G 8 47 main.o -rw - r- -r-- 1 root root 144 Jan 1 0834 makefile ^rwxr-xr^x 1 root root 5968 Jan 168 47 myapp[root(3software c]#/tmp/ccQ9Ys9n,o : In function main*:maIn.c:(,text+0xl2): undefined reference to functionone ( main .c :(.t ext+Bxl7): undefined reference to'function _t wo ' collect2: Id returned 1 exit status [root (asoftware €]# gdb myappGNU gdb (GDB) Red Hat Enterprise Linux (7.0.1-23.elS) Copyright {Cl 26G9 Free Software Foundation t Inc LLicense GPLV3+: GNU GPL version 3 or later <http ://g+ This is free software : you a re Tree to change and redistribute it .There is NO WARRANTY, to the extent permitted by LaWx Type 11 show copying 1' and N show warranty 1* for details.This GDB was configured as "1386-redhat-llnux-gnu".For bug reporting instructionm 「 please see: <http ://www.gnu +0rg/5Oftware/gdb/bugs/>... myapp: No sucn file or directory. tqdb) 1ffle E (tt view Rac« 旦eUHLACL RLML l BUKL ■0 D 0 l.e2x2 aa.4ib.hch園&ApfcH -4EE ■ ■ Ll = bur . I 劭mwi.cmjiiin.Dimakefilem ¥aPP[rootQsoftware c ]# get-o myapp main ・匸O fork c x#include<stdio.h> main(){int pl,p2;if (pl-fork())putcha r( ' b');else{if(p2=fork()) putchar(' c1) j else putchar(1 a 1);}}[qinpeng cheng^sof~]$ gcc -o fork fork.c [qinpengcheng(aso f tware ./forkacb[qlnpengcheng(asoftware -J* ./fork ab[qinpengcheng^cftware *]$ Cn/fork acb[qinpengcheng^scftware *]辛-/fork act[qlnpengcheng(3software 宀]$ ./fork b[qinpengcheng(asoftware ~]$ ca./fork acb[qinpengcheng(asoftware -]$ ./fork acb[qinpengcheng(asoftware -]$ ./fork acb[qinpengcheng^software 〜]$ ./fork acb[qinpengcheng(asoftware ,/forkacb[qinpengcheng^software 〜]$ -/fork acb[qinpengchen^software -]$ -/fork acb[qlnpengcheng(3software./forkb[qinpengcheng(3software -]$ ac出现acb的结果:p仁fork()会创建一个新的进程,父进程遇到p2=fork() 创建又一个新的进程,此时,父进程运行完毕输出a, p2=fork()创建的子进程运行完毕输出c,最后p仁fork()创建的子进程运行完毕输出b;出现abc的结果:p仁fork()会创建一个新的进程,父进程遇到p2=fork() 创建又一个新的进程,此时,父进程运行完毕输出a,p仁fork()创建的子进程运行完毕输出b,最后p2=fork()创建的子进程运行完毕输出c; 出现bca的结果:p仁fork()会创建一个新的子进程,运行完毕输出b, 父进程遇到p2=fork()创建又一个新的子进程,运行完毕输出c,最后父进程运行完毕输出a;出现bac的结果:p仁fork()会创建一个新的子进程,运行完毕输出b,父进程遇到p2=fork()创建又一个新的子进程,父进程运行完毕输出a,最后子进程运行完毕输出c;(3)0 process,匚*#include <unistd.h>^include <stdio.h>#include <stdlib.h>int main(){int result;printf("Running Is with system:\n");result = systern( "Is /home");printf("systmm result=%d\n"r result);printf("system has done!"); printf ( ^'Running Is with exec: \n"); result =execlp(,,ls,,/,ls,,f V^G);printf("exec result=%d\n",result); printf ("exec has done!");exit(0);}[qlnpengchengtasoftware -] S gcc - □ process process . c[qinpeng匚日「m -]S ./processRunning Is with system:opt qlnpengchengsystem result=flsystem has done!R unning Is with exec:bln dev gcc461lost+found mnt proc selinux tmpboot etc home inedia net root srv usrc g-*-+461lib misc opt sb"sys var[qlnpengchengtasoftware .system是用shell来调用程序=fork+exec+waitpid ,而exec是直接让你的程序代替原来的程序运行。
Linux高级编程实验实验报告
L i n u x高级编程实验实验报告The Standardization Office was revised on the afternoon of December 13, 2020电子科技大学实验报告学生姓名:学号:指导教师:李林实验地点:清水河主楼A2-412 实验时间:一、实验室名称:Linux环境高级编程实验室二、实验项目名称:插件框架实验三、实验学时:4学时四、实验目的:实践Linux环境下插件框架的开发。
学习并掌握插件的工作原理。
五、实验内容:●1、使用动态链接库实现打印功能开发一个程序,向屏幕打印“Hello World”;在不重新编译链接原程序的前提下,将打印的文字改为“Hello China”。
●2、使用动态链接库实现自定义打印功能同时要打印“Hello World”,打印“Hello China”,甚至同时打印未来才会增加的其他打印信息。
打印未来的这些信息,也不能重新编译链接原程序。
●3、一次只调用一种功能通过命令行方式:./ help,输出所有插件实现的功能ID,以及该功能ID对应的功能描述(参考代码3)通过命令行方式:./ FuncID,调用具体打印功能(每个插件导出GetID接口)(参考代码4)●4、导出函数都放在一个类中在版本3中,插件导出了Print、GetID、Help三个函数,主程序需要使用多个容器分别保存这些函数地址。
在复杂的业务逻辑中,导出的函数可能更多,若还按照版本3的方式,代码维护性不佳。
将三个导出函数都放在一个类中,让插件外部获取该类的对象六、实验步骤:版本1程序代码如图、图、图所示(程序是在Linux图形界面截取的,本人的Ubuntu在字符界面无法显示中文注释):图功能函数图 hello world函数图主函数首先,使用命令#g++ -fpic –shared –o 将和编写成动态库。
如图所示:图动态链接库的编写然后,再进行动态库使用者的编译,命令是#g++ -o main –ldl,如图所示。
linux编程 实验报告
linux编程实验报告Linux编程实验报告一、引言Linux操作系统是一种自由开源的操作系统,具有稳定性、安全性和灵活性等优点,被广泛应用于服务器、嵌入式系统和个人电脑等领域。
本实验旨在通过编程实践,探索Linux编程的基本概念和技术,并通过实验结果验证相关理论。
二、实验目的本实验的主要目的是通过编写C语言程序,理解Linux系统调用的原理和使用方法。
具体目标包括:1. 熟悉Linux系统调用的概念和基本原理;2. 掌握Linux系统调用的常用函数及其使用方法;3. 理解文件操作、进程管理和网络编程等方面的基本知识。
三、实验环境本实验使用的实验环境为Ubuntu 20.04 LTS操作系统。
在该系统上,我们可以使用gcc编译器编译C语言程序,并通过终端执行程序。
四、实验内容1. 文件操作文件操作是Linux编程中的重要内容之一。
通过使用系统调用函数,我们可以实现对文件的读写、创建和删除等操作。
在本实验中,我们编写了一个简单的文件复制程序,实现将一个文件的内容复制到另一个文件中。
2. 进程管理进程是Linux系统中的基本执行单元。
通过创建和管理进程,我们可以实现并发执行和多任务处理等功能。
在本实验中,我们编写了一个简单的多进程程序,实现同时执行多个任务的效果。
3. 网络编程网络编程是Linux编程中的一个重要领域,它涉及到网络通信、套接字编程和网络协议等内容。
在本实验中,我们编写了一个简单的客户端-服务器程序,实现了基于TCP协议的网络通信。
五、实验结果与分析通过实验,我们成功编写了文件复制程序、多进程程序和客户端-服务器程序,并在实验环境中运行和测试了这些程序。
实验结果表明,我们对Linux编程的基本概念和技术有了初步的理解和掌握。
在文件复制程序中,我们使用了open、read和write等系统调用函数,实现了将源文件的内容复制到目标文件中。
通过实验测试,我们发现该程序能够正确地复制文件,保持了源文件的内容和结构。
