Linux课程大作业

合集下载

Linux期末大作业

Linux期末大作业

简单的IRC聊天程序—— Linux课程期末实验第一章概述【实验目的】综合应用Linux系统下的网络编程技术,使用C语言,结合软件工程思想,设计并实现一个简单的IRC聊天程序,具有服务器端和客户端,可以是终端字符界面,支持用户管理,用户名/密码注册和登录,支持版面聊天,用户可以选择进入某个版面,版面发言大家可以看到,同时支持点对点私聊,可以选择某个用户进行私聊。

从而熟悉在Linux系统所提供的网络通信接口及该系统下的编程思想,深入对计算机系统的理解,并切实提高软件设计开发的能力。

【实验原理】一个简单的聊天室,其功能是当这个聊天室中的任何一个用户输入一段字符后,室内的其他用户都可以看到这句话。

据此,聊天程序分为客户端和服务器端。

客户端对应每一个参加聊天的用户,完成从终端上输入采集并传递到服务器端和从服务器端接收信息输出显示的功能。

总体介绍该结构如下。

首先是初始化服务器,使服务器进入监听状态:sockfd = socket(AF_INET, SOCK_STREAM, 0);// 首先建立一个socket,族为AF_INET,类型为SOCK_STREAM。

// AF_INET = ARPA Internet protocols,即使用TCP/IP协议族。

// SOCK_STREAM类型提供了顺序的,可靠的,基于字节流的全双工连接。

// 由于该协议族中只有一个协议,因此第三个参数为0。

bind(sockfd, (struct sockaddr *)&servaddr,sizeof(serv_addr));// 再将这个socket与某个地址进行绑定。

// serv_addr 包括sin_family=AF_INET 协议族同socket。

// sin_addr.s_addr = htonl(INADDR_ANY)服务器所接收的所有其他地址// 请求建立的连接。

// sin_port = htons(SERV_TCP_PORT) 服务器所监听的端口。

Linux课程大作业

Linux课程大作业

Linux课程设计报告题目 Linux课程大作业院系班级姓名指导教师一、基础篇(给出源程序和编译运行的结果)1、编写一个简单的c语言程序:根据输入的两个整数求平均值并且在终端输出,通过gcc编译器得到它的汇编程序文件。

源代码(c):源代码(汇编):.file "sum.c".text.globl average.type average, @functionaverage:.LFB0:.cfi_startprocpushl %ebp.cfi_def_cfa_offset 8.cfi_offset 5, -8movl %esp, %ebp.cfi_def_cfa_register 5subl $8, %espmovl 12(%ebp), %eaxmovl 8(%ebp), %edxaddl %edx, %eaxmovl %eax, -4(%ebp)fildl -4(%ebp)fldl .LC0fdivrp %st, %st(1)leave.cfi_restore 5.cfi_def_cfa 4, 4ret.cfi_endproc.LFE0:.size average, .-average.section .rodata.align 4.LC2:.string"\350\257\267\350\276\223\345\205\245\344\270\244\344\270\252\346\225\260\ 357\274\214\345\233\236\350\275\246\345\210\206\345\211\262".LC3:.string "%d".LC4:.string"%d\344\270\216%d\347\232\204\345\271\263\345\235\207\345\200\274\346\23 0\257\357\274\232%lf\n".text.globl main.type main, @functionmain:.LFB1:.cfi_startprocpushl %ebp.cfi_def_cfa_offset 8.cfi_offset 5, -8movl %esp, %ebp.cfi_def_cfa_register 5 andl $-16, %espsubl $48, %espmovl $0, 44(%esp) movl $.LC2, (%esp) call putsmovl $.LC3, %eax leal 40(%esp), %edx movl %edx, 4(%esp) movl %eax, (%esp) call __isoc99_scanf movl $.LC3, %eax leal 44(%esp), %edx movl %edx, 4(%esp) movl %eax, (%esp) call __isoc99_scanf movl 44(%esp), %edx movl 40(%esp), %eax movl %edx, 4(%esp) movl %eax, (%esp) call averagemovl 44(%esp), %ecx movl 40(%esp), %edx movl $.LC4, %eax fstpl 12(%esp)movl %ecx, 8(%esp) movl %edx, 4(%esp) movl %eax, (%esp)call printfleave.cfi_restore 5.cfi_def_cfa 4, 4ret.cfi_endproc.LFE1:.size main, .-main.section .rodata.align 8.LC0:.long 0.long 1073741824.ident "GCC: (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3".section .note.GNU-stack,"",@progbits执行结果:2、编写一个c语言程序:打印输出所有“水仙花数”,用gdb调试程序(给出步骤,至少十步以上)。

linux大作业

linux大作业

仲恺农业工程学院Linux课程大作业报告院(系):信息科学与技术学院专业班级:计算机学号:姓名:目录1 简述题目 (1)2 shell程序设计 (5)2.1 程序设计要求 (5)2.2 程序设计内容 (5)1 (5)2 (10)3 (11)5 (13)6 (16)3 文件和目录部分 (17)3.1 程序设计要求 (17)3.2 程序设计内容 (17)2 (17)3 (17)6 (18)8 (19)9 (19)4 进程和信号部分 (20)4.1 程序设计要求 (20)4.2 程序设计内容 (20)1 (20)2 (21)8 (22)9 (23)10 (24)5 网络编程部分 (25)5.1 程序设计要求 (25)5.2 程序设计内容 (25)2 (25)3 (26)1 简述题目1、makefile文件的作用是什么,makefile文件中有一种变量,其值是根据具体的规则来确定的,称为自动变量,其中代表所有依赖文件列表的是哪个;举例说明make命令的工作流程。

答:(1)makefile的作用就是使得源文件修改的时候,能很快地自动编译和链接所有修改过的文件。

Make工具可将编译和链接的步骤按一定的规则写入文本文件。

(2)是指冒号后面的那一列(3)举例:现在有lib.h,lib.c,mod.c,app.h,app.c,main.c文件,编译链接成main.o程序示例:#script5-2_makefileAppexam:main.o app.o mod.o lib.ogcc –o apexam main.o app.o mod.o lib.omain.o:main.c app.hgcc –c main.capp.o:app.c app.hgcc –c app.cmod.o:mod.cgcc –c mod.clib.o:lib.c lib.hgcc –c lib.cclean:rm –f *.o2、什么是进程,用fork()创建一个子进程时,系统会做什么工作。

linux程序设计大作业

linux程序设计大作业

linux程序设计大作业在计算机科学与技术领域,Linux操作系统一直以其稳定性、安全性和开放性而受到广泛关注和应用。

作为一名计算机专业的学生,我有幸参与了一门名为“Linux程序设计”的课程,并完成了这门课程的大作业。

这门课程的大作业要求我们设计并实现一个基于Linux操作系统的应用程序。

我们可以自由选择应用程序的功能和领域,但需要保证程序的稳定性和可扩展性。

经过深思熟虑,我决定设计一个名为“Linux 文件管理器”的应用程序。

Linux文件管理器是一个用于管理文件和目录的工具,它可以帮助用户方便地浏览、复制、移动、删除和重命名文件和目录。

在设计这个应用程序时,我考虑到了用户的使用习惯和需求,力求提供简洁、直观和高效的操作界面。

首先,我使用C语言编写了程序的核心功能。

通过调用Linux系统提供的文件操作函数,我实现了文件和目录的创建、打开、读写、关闭等基本操作。

同时,我还实现了文件和目录的复制、移动、删除和重命名功能,以及文件和目录的属性查看和修改功能。

这些功能的实现基于Linux系统的文件系统结构和权限管理机制,保证了程序的安全性和可靠性。

其次,我设计了一个简洁而直观的用户界面。

通过使用Linux系统提供的图形界面库GTK+,我创建了一个包含菜单栏、工具栏和文件列表的主窗口。

用户可以通过菜单栏和工具栏选择不同的操作,而文件列表则显示当前目录下的文件和目录。

用户可以通过鼠标点击和键盘操作来选择文件和目录,并进行相应的操作。

同时,我还为用户提供了快捷键和上下文菜单等功能,以提高操作的效率和便捷性。

最后,我进行了大量的测试和优化工作,确保程序的稳定性和性能。

我编写了各种测试用例,模拟了不同的使用场景和操作方式,以验证程序的正确性和健壮性。

同时,我还对程序进行了性能优化,减少了不必要的系统调用和资源占用,提高了程序的运行效率和响应速度。

通过这个大作业的设计与实现,我不仅深入理解了Linux操作系统的原理和机制,还提高了自己的编程能力和问题解决能力。

Linux-习题(1)

Linux-习题(1)

大作业 ( 一 )一:填空题1:Linux中除图形登录外还可以使用命令提示行进行登录。

2:如果要访问网络中的另一台电脑,可以通过命令方式进行登录。

3: shell 是一个类似于 dos 的命令行解释工具。

4:Shell的概念最初是在__unix____操作系统中形成和得到广泛应用的。

5:Linux中的Shell有多种类型,其中最常用的几种是 Bourne Shell sh 、C Shell(csh)和Korn Shell(ksh).6:Bourne Shell简称 sh 。

7:创建名为p的用户可以通过 useradd p 命令进行创建。

8:为名为p的用户创建密码可以通过 passwd p 命令进行创建。

9:删除名为p的用户可以通过 userdel p 命令进行。

10:mv命令用来移动文件,cp命令用来复制文件。

11:当在Shell环境中启动vi编辑器时,可以使用 vi 命令进行启动。

12:当在vi编辑器中输入文字时,需要按键盘中的 I 键才可以进行输入。

13:在命名文件时不可以使用/、:、 \、 *、?、 % 、 >、|等符号。

14:root用户账户的基本信息保存在 /root/. 文件中。

15:在账户记录文件“root: x: 0: 0: root: /root: bin/bash”代码中的“bin/bash”表示 Bourne Again shell 。

16:当其他用户登录后要切换到root用户账户时,可以通过 su 命令进行。

17:当需要修改root用户账户时,需要在用户设置窗口中选择新建选项后才可以进行。

18:除了root用户账户外,还有lp、mail、uucp、 news 和 halt 这些默认的系统账户。

19:在Linux中权限最大的组是 root组,该组具备Linux操作的所有权限。

20:在Linux中可以使用 fdisk 或 df 命令查看磁盘分区情况。

21:当需要使用kill命令关闭编号是2547的程序时,其书写方式是 kill-9 2547 。

linux大作业

linux大作业

学号:姓名:班级:
大作业任务要求:
一、Shell编程要求:写出两个Shell程序,每个程序不少于十五行;说明程序主要功能;每行给出注释。

二、Linux操作系统配置实例要求:查阅资料结合实际使用情况,写出Linux操作系统使用中的一个配置的详细过程;具体配置目标不限(自选)。

三、Linux操作系统应用开发实例要求:编写Linux下的一个应用程序。

开发语言和工具不限;给出源代码和运行结果。

关键代码部分要给出注释。

四、Linux内核源码解读
要求:任选Linux内核源码,写出该模块运行过程;在每行内核源码后注释说明;解读源码不少于三十行。

收到的大作业内容不能雷同
Linux操作系统实验报告
实验1:Linux基本命令使用
实验目的:了解Linux字符界面的操作特点,验证Linux命令的用途,掌握Linux的基本操作;学习使用vi编辑器建立、编辑、显示以及加工处理文本文件
实验内容:
实验总结
实验2:shell编程
实验目的:熟悉shell环境,了解shell脚本编程的基本程序结构如循环结构,条件判断等,能进行简单shell脚本的程序设计,掌握shell程序的运行方法。

实验内容:
实验总结
实验3:Linux C编程
实验目的:掌握gcc的使用,熟悉makefile的编写;熟练掌握fork、exec、wait、waitip 等进程管理系统调用的使用
实验内容:
实验总结。

LINUX题库及参考答案

LINUX题库及参考答案

LINUX(UBUNTU)大作业Linux第一次作业一、选择题1、下列哪种说法是错误的( C ) 。

A.操作系统是裸机之上的第一层软件B.操作系统控制和管理全部的计算机资源C.Microsoft Office 是操作系统的一种D.操作系统应为用户提供便捷的操作界面2、以下说法中正确的是(C )。

A.Windows 8是单用户单任务操作系统B.MS-DOS是多用户多任务操作系统C.Linux是多用户多任务操作系统D.Unix是单用户多任务操作系统3、下列哪种说法是错误的( C ) 。

A.操作系统可用于控制和管理计算机系统资源B.操作系统可用于对各类任务进行调度C.操作系统可用于完成源代码编译D.操作系统应为用户提供便捷的操作界面4、Linux中系统超级管理员的帐户是(B )。

A.adminB.rootC.administratorD.superuser5、Linux系统是一个(D )的操作系统。

A.单用户、单任务B.单用户、多任务C.多用户、单任务D.多用户、多任务6、Linux是一个功能强大的操作系统,同时它是一个(C )。

A、商业软件B、共享软件C、自由软件D、专利软件7、自由软件的含义是(B )。

A.用户不需要付费B.软件可以自由修改和发布C.只有软件作者才能向用户收费D.软件发行商不能向用户收费8. 超级用户登录后的操作提示符是( B ) 。

A、$B、#C、&D、@9、在某终端显示信息为:[user@localhost ~]$,其中“~”表示(D )。

A.当前目录B.名为~的主机C.系统根目录/D.用户user的家目录10、关于Linux内核版本的说法,以下错误的是(C )。

A.表示为主版本号.次版本号.修正号B.1.2.3表示稳定的发行版C.1.3.3表示稳定的发行版D.2.2.5表示对内核2.2的第5次修正二、简答题1、请简述Linux操作系统有什么优点?答:Linux的主要优点包括:•提供了先进的网络支持:内置TCP/IP协议;•真正意义上的多任务、多用户作系统;•与UNIX系统在源代码级兼容,符合IEEE POSIX标准;•支持数十种文件系统格式;•开放源代码,用户可以自己对系统进行改进;•采用先进的内存管理机制,更加有效地利用物理内存。

LINUX大作业

LINUX大作业

Linux系统编程大作业一、实验题目实现一个FTP服务系统二、实验目的通过该实验,掌握Linux环境下的多线程/进程编程技术、文件操作、用户权限管理、进程间通信技术三、实验要求基于客户/服务器交互模式,采用TCP/IP通信协议,实现一个支持远程文件传输的客户/服务器软件,支持文件的上传和下载。

其中客户端软件命名为myftp,服务器软件命名为ftpserver,具体功能需求如下:(一)服务器1)启动方式。

执行ftpserver [IP地址] port启动FTP服务。

其中IP地址为可选项。

若不提供服务器IP地址,FTP服务将自动绑定到本地网络的IP。

2)用户认证与权限管理。

为FTP客户提供基于用户名/密码认证的服务模式,只有授权用户才可以访问FTP服务。

与此同时,对文件/目录的访问,也实现基于授权的访问机制,即只有授权用户才可以对指定文件进行读写操作。

用户只有在具备写权限操作的目录上才能上传文件。

(可直接集成Linux服务器系统的用户管理)3)并行执行功能。

为提高系统性能,服务器将采用多进程/线程技术响应客户请求。

当客户通过身份验证后,服务器将创建一个新的进程/线程来响应用户请求,提供服务。

4)服务器支持的客户文件操作。

登录成功后,客户可在服务器执行以下操作:创建/删除目录(mkdir/rmdir)、显示当前路径(pwd)、切换目录(cd)、查看当前目录下的所有文件(ls)、上传单个/多个文件(put/mput)、下载单个/多个文件(get/mget)。

5)服务传输模式。

支持二进制(默认)及ASCII传输模式。

用户可通过执行binary/ascii 命令切换传输模式。

6)站点计数与用户管理功能。

统计服务器站点的当前活动用户数及自运行以来的访客总数。

系统管理员可在服务器软件运行终端窗口执行以下命令:A)count current:当前活动用户数B)c ount all:显示系统访客总数C)l ist:显示当前在线的所有用户的用户名D)kill username:强制删除某个用户。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Linux课程设计报告
题目 Linux课程大作业
院系
班级
姓名
指导教师
一、基础篇(给出源程序和编译运行的结果)
1、编写一个简单的c语言程序:根据输入的两个整数求平均值并且在终端输出,通过gcc编译器得到它的汇编程序文件。

源代码(c):
源代码(汇编):
.file "sum.c"
.text
.globl average
.type average, @function
average:
.LFB0:
.cfi_startproc
pushl %ebp
.cfi_def_cfa_offset 8
.cfi_offset 5, -8
movl %esp, %ebp
.cfi_def_cfa_register 5
subl $8, %esp
movl 12(%ebp), %eax
movl 8(%ebp), %edx
addl %edx, %eax
movl %eax, -4(%ebp)
fildl -4(%ebp)
fldl .LC0
fdivrp %st, %st(1)
leave
.cfi_restore 5
.cfi_def_cfa 4, 4
ret
.cfi_endproc
.LFE0:
.size average, .-average
.section .rodata
.align 4
.LC2:
.string
"\350\257\267\350\276\223\345\205\245\344\270\244\344\270\252\346\225\260\ 357\274\214\345\233\236\350\275\246\345\210\206\345\211\262"
.LC3:
.string "%d"
.LC4:
.string
"%d\344\270\216%d\347\232\204\345\271\263\345\235\207\345\200\274\346\23 0\257\357\274\232%lf\n"
.text
.globl main
.type main, @function
main:
.LFB1:
.cfi_startproc
pushl %ebp
.cfi_def_cfa_offset 8
.cfi_offset 5, -8
movl %esp, %ebp
.cfi_def_cfa_register 5 andl $-16, %esp
subl $48, %esp
movl $0, 44(%esp) movl $.LC2, (%esp) call puts
movl $.LC3, %eax leal 40(%esp), %edx movl %edx, 4(%esp) movl %eax, (%esp) call __isoc99_scanf movl $.LC3, %eax leal 44(%esp), %edx movl %edx, 4(%esp) movl %eax, (%esp) call __isoc99_scanf movl 44(%esp), %edx movl 40(%esp), %eax movl %edx, 4(%esp) movl %eax, (%esp) call average
movl 44(%esp), %ecx movl 40(%esp), %edx movl $.LC4, %eax fstpl 12(%esp)
movl %ecx, 8(%esp) movl %edx, 4(%esp) movl %eax, (%esp)
call printf
leave
.cfi_restore 5
.cfi_def_cfa 4, 4
ret
.cfi_endproc
.LFE1:
.size main, .-main
.section .rodata
.align 8
.LC0:
.long 0
.long 1073741824
.ident "GCC: (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3"
.section .note.GNU-stack,"",@progbits
执行结果:
2、编写一个c语言程序:打印输出所有“水仙花数”,用gdb调试程序(给出步骤,至少十步以上)。

所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。

例如,153是一水仙花数,因为153=1³+5³+3³。

源代码:
执行结果:
3、设计一个程序,要求输出n个整数(n也由键盘输入)中的最大值,并为它编写makefile文件,用make编译后修成返回最小值,再编译,观察有多少文件不需要重新编译。

源代码:
makefile文件:
结果图:
改变程序后,只有max.c,main.c文件程序需要重新编译;
4、编写一个程序,求2-n间的素数,n由键盘输入,循环变量分别从2到n、2到(int)sqrt(n),分别测出两个循环的所用时间。

源代码:
编译运行效果:
5、设计一个程序,要求将10分别以十进制、八进制和十六进制输出。

程序设计:
运行结果:
一、提高篇(三选二,划出程序流程图,给出程序源代码和编译运行的结果)
1、设计两个程序,要求用命名管道FIFO,实现简单的文本文件或图片文件的传输功能。

流程图:源代码:
运行结果:
2、设计两个程序,要求用消息队列,实现聊天程序,每次发言后自动在后面增加当前系统时间。

增加结束字符,比如最后输入“88”后结束进程。

流程图:
接收端源代码:
运行结果:
3、设计两个程序,要求用mmap系统,实现简单的聊天程序。

二、应用篇
给出程序设计思路和程序设计流程图,并给出程序源代码和编译运行的结果。

设计思路:要求生产者-消费者在固定的仓库空间条件下,生产者每生产一个产品将占用一个仓库空间,生产者生产的产品库存不能越过仓库的存储量,消费者每消费一个产品将增加一个仓库空间,消费者在仓库产品为零时不能再消费。

以下使用了两个信号量,一个用来管理消费者(sem_produce),一个用来管理生产者(sem_custom),sem_produce表示当前仓库可用空间的数量,sem_custom 表示当前仓库中产品的数量。

对于生产者来说,其需要申请的资源为仓库中的剩余空间,因此,生产者在生产一个产品前需申请sem_produce信号量,当此信号量的值大于零时,即有可用空间,将生产产品,并将sem_produce值减1,同时,当其生产一个产品后,当前仓库的产品数量加1,需要将sem_custom的值自动加1.对于消费者来说,其需要申请的资源为仓库中的产品,因此,消费者在消费一个产品前需申请sem_custom信号量,当此信号量的值大于零时,即有可用产品,将消费一个产品,并将sem_custom值减1,同时,当其消费一个产品后,当前仓库的剩余空间加1,需要sem_produce的值自动加。

1、生产者-消费者问题模拟程序。

流程图:
生产者源代码:
消费者源代码:
编译运行结果:
3、实现基于GTK+的网络聊天室,实现通信双方的实时通信。

设计思想:初始化聊天窗口界面,建立socket连接,实现一对一的通信。

流程图:。

相关文档
最新文档