文档库 最新最全的文档下载
当前位置:文档库 › linux编程大作业资料

linux编程大作业资料

linux编程大作业资料
linux编程大作业资料

第一部分简述题目

要求:这部分题目必做,要详细回答,最好用自己理解的语言回答,有些题目可用图形和举例等阐述问题。

1、makefile文件的作用是什么,makefile文件中有一种变量,其值是根据具体的规则来确定的,称为自动变量,其中代表所有依赖文件列表的是哪个;举例说明make命令的工作流程。

答:在Makefile文件中描述了整个工程所有文件的编译顺序、编译规则。其中包括:工程中的哪些源文件需要编译以及如何编译、需要创建那些库文件以及如何创建这些库文件、如何最后产生我们想要的可执行文件。Makefile 有自己的书写格式、关键字、函数。在Makefile 中可以使用系统shell所提供的任何命令来完成想要的工作。能够使用一行命令来完成“自动化编译”。

自动变量$^代表所有依赖文件,以空格分开,以出现的先后为序。

2、什么是进程,用fork()创建一个子进程时,系统会做什么工作。请编程说明。

答:进程是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配的单位,不仅是系统内部独立运行的实体也是独立竞争资源的实体。

用fork()时系统会分配子进程一个ID号然后继承父进程的地址空间,包括进程上下文进程堆栈打开的文件描述符等等,他就是父进程的一个复制品。

3、简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程。解释i节点在文件系统中的作用。

答:文件系统建立在由若干连续的逻辑块构成的存储空间中,根据用途逻辑块可分为:超级块、i节点区和数据区。其中i节点区用于存放i节点,每个文件都

有各自唯一的i节点,i 节点是一个64字节长的表,表中包含了文件的相关信息,其中有文件的大小、文件所有者、文件的存取许可方式以及文件的类型等重要信息。在i节点表中最重要的内容是磁盘地址表。在磁盘地址表中有13个块号,文件将以块号在磁盘地址表中出现的顺序依次读取相应的块。Linux文件系统通过把i节点和文件名进行连接,当需要读取该文件时,文件系统在当前目录表中查找该文件名对应的项,由此得到该文件相对应的i节点号,通过该i 节点的磁盘地址表把分散存放的文件物理块连接成文件的逻辑结构。

4、文件指针FILE*与文件描述符是一个什么样的关系,请画图说明。

答:在linux系统中,一个文件可以被多个线程共享,每个进程在内核中用task_struct结构表示,其中有一个称为文件描述符表的fd,文件描述符表fd,是一个指针数组,每个指针指向一个file结构,用于记录一个打开文件的状态信息,其中f_pos记录打开文件的当前读写位置,f_dentry打开文件所在目录,f_op文件具体的操作集,打开文件就会获得文件描述符,它是个很小的正整数。每个进程在PCB(Process Control Block)中保存着一份文件描述符表,文件描述符就是这个表的索引,每个表项都有一个指向已打开文件的指针。

5、简述与windows的文件系统相比,linux文件系统有什么特点,并用图详细描述。

答:Linux的每个目录都可能是一个分区,在安装Linux时至少有两个分区,根分区和swap分区,其它的分区都安装在根下面。如将一个分区安装在/var下面,每个分区安装的位置成为“挂载点”,如挂载点/var。swaP分区大小是内存的2倍,等价于Windows的虚拟内存。根分区文件类型一般选择为ext3,swap 分区类型即为swap。Linux中文件和目录都区分大小写,如home和Home不是一个目录。Linux把文件的i-nod信息全都交给了目录管理。包括文件存不存在、文件名是什么、文件存放在磁盘哪里等信息。只要有这个目录的写权限,就可以

删除目录下的任意文件(注:这里的文件不包括目录)和更改目录下的任意文件的文件名(注:包括目录)。特别的,对于目录,如果这个目录只是一个空目录的话,就相当于一个文件,完全可以删除。但是因为Linux不能删除一个非空的目录。Linux中有一些重要的系统目录,它们都有特定的用途。Linux文件系统建立在由若干连续的逻辑块构成的存储空间中,根据用途逻辑块可分为:超级块、i节点区和数据区。

6、Linux创始人是谁,Linux操作系统的诞生、发展和成长过程始终依赖着的重要支柱有哪些,并描述Linux的特点。

答:linux的创始人是芬兰赫尔辛基大学生Linus Torvalds。Linux操作系统的诞生、发展和成长过程始终依赖着的重要支柱有:(1)UNIX操作系统、(2)MINIX 系统、(3)GUN计划、0(4)POSIX标准、(5)Internet网络。

Linux的特点:

1.模块化程度高

2.源代码公开

3.广泛的硬件支持

4.安全性及可靠性好

5.具有优秀的开发工具

6.有很好的网络支持和文件系统支持

7.与UNIX完全兼容

7、为什么要学习Linux开源技术。

答:因为Linux具有可靠的系统安全,而且开源最安全:

(1)、基于Linux操作系统的文件系统安全可靠,即限定操作系统存储物理空间,并使其不可被改写。将操作系统安装在相对独立的物理空间中,同时将安装操作系统的物理存储介质限定为只读方式,使所安装的操作系统在物理层上就不可被改写,达到安全可靠;同时将用户空间在物理上与系统空间相互隔绝,当用户需要安装软件或保存各种文档时,可以透明地存储在该空间中。

(2)、用户/文件权限的划分

用户权限在Windows操作系统里也不陌生,但是Linux操作系统的用户权限和文件权限要比Windows操作系统里严格有效。比较明显的一个案例就是,即便在Windows操作系统里设置了多用户,但是不同的用户之间通过一定的方式,还是能够互访文件的,这就失去了权限的意义。而LinuX可以对每一个文件进行授权,用户只能对自己有权限的文件进行权限范围内的操作,而且在实际使用中,root用户一般只在对系统进行维护时,如添加新用户,安装应用程序等才进行登录,一般都是以普通用户身份登录,普通用户不能修改系统文件夹下的文件,因此Linux下病毒软件想修改系统程序,根本没有可能性,大大增加了系统的安全性和可靠性。

8、Linux的主要组成包括什么。

答:Linux的主要组成包括:Linux内核、shell命令解释器、管理工具、图形用户界面。

9、什么是系统调用?系统调用是通过什么方式陷入内核态的?请写出你对系统调用的理解。什么是文件I/O和标准I/O库?文件I/O和标准I/O库的区别?

答:系统调用是指操作系统提供给用户程序调用的一组特殊接口,用户程序可以通过这组接口获得操作系统内核提供的服务。

系统调用是通过软件中断方式陷入内核的。

linux的文件I/O是由操作系统提供的基本IO服务, 标准I/O库通过封装系统调用,提供了一个到底层I/O的接口。

标准I/O默认采用了缓冲机制,还创建了一个包含文件和缓冲区相关数据的数据结构;文件I/O一般没有采用缓冲模式,需要自己创建缓冲区。一种是标准库封装系统调用而成,更高级,一种是系统提供的,比较低级;标准I/O 可移植性高、文件I/O可移植性低。

10、如何学习《Linux系统编程》这门课程,谈谈自己的感受。第二程序设计题目

要求:

●Shell程序设计部分、文件和目录部分、进程和信号部分、

网络编程部分则必做(其中前3部分选作5道题目,网络编程为自学部分,选作2道题目)。

●若做综合设计题目或自拟综合设计题目,则Shell程序设

计部分、文件和目录部分、进程和信号部分、网络编程部分可不做。

Shell程序设计部分

1、设计shell脚本程序,运行结果如下:

- - - - - - - - - - - - - - - -

Linux 13/06/11

- - - - - - - - - - - - - - - -

A: 查看进程信息

B:查看用户信息

C:显示当前目录信息

D:退出

- - - - - - - - - - - - - - -

当用户输入相应的数字执行相应的功能。

2、设计shell脚本程序,在屏幕上输出操作系统的信息,包括计算机名、Linux分发版本名称、Linux内核版本和当前的IP地址。

3、设计shell脚本程序,要求用户对/home目录下的文件进行备份,压缩为Linux系统中常用的tar.gz格式。

4、设计shell脚本程序,假设用户建立了目录A和目录B,目录中不包含子目录,要求用户编写一个脚本程序,比较两个目录内文件的差异。

5、设计一个shell程序,添加一个新组为class1,然后添加属于这个组的30个用户,用户名的形式为stdxx,其中xx从01到30。

6、设计一个shell程序计算n的阶乘。要求:

(1)从命令行接收参数n;

(2)在程序开始后立即判断n的合法性,即是否有参数,若有是否为正整数,若非法请给错误提示;

(3)最后输出计算的结果。

7、设计一个shell程序,在每月第一天备

份并压缩/etc目录的所有内容,存放在/root/bak目录里,且文件名为如下形式yymmdd_etc,yy为年,mm为月,dd为日。

8、判断当前工作目录下所有的文件类型,如果是目录显示目录名,如果是文件查看文件内容,如果都不是,显示提示信息。文件和目录部分

1、编写程序,打开一个文本文件

(1)读取其中内容,将其复制到一个新建文件中;

(2)将文本文件截断至原来长度的1/2;

(3)将文件中的小写字母转换成为大写字母,其他字符不变。

2、编写程序,读取当前目录下的内容,并将其打印输出到终端。

3、编写程序,在/tmp目录下面建立一个test目录,然后在test

目录下建立一个空文件hello.txt,注意函数出错处理。

4、编写程序实现一个简单的员工档案管理系统,具备简单的员工资料增加、删除和查询等功能,并采用二进制文件保存员工的资料信息。

5、为了便于文件的管理和传输,某些时候需要将特别大的文件切割为多个指定长度小的文件。现有一个文件管理程序需要实现大文件切割功能,要求用户编写一个函数实现该功能。

6、编写程序,根据输入的参数创建一个目录文件。

7、编写程序,首先输出当前的工作目录,然后更改工作目录,输出更改后的工作目录。

vi

8、编写程序,编写shell命令中的ls命令。

9、编写程序,编写shell命令中的pwd命令。

10、编写程序,编写shell命令中的cp命令。

11、编写Shell命令中的cat命令。

12、编写Shell命令中的tail命令。(用缓冲技术来提高效率)

13、编写Shell命令中的ls -i命令。

进程和信号部分

1、编写程序,获取并输出子进程和父进程的相关信息。

2、编写程序,要求用户设计多进程应用程序,改程序作为父进程执行,在执行过程中能够通过调用自身创建一个子进程。父进程和子进程均在终端中输出一条信息,标识自己的身份。

3、守护进程是运行于系统后台的进程,常用于提供各种系统服务和系统日志管理功能。现要求用户编写一个守护进程应用程序,定时向日志文件写入字符串。

4、编写程序,在不同的进程间实现信号发送和接收,同时在传达过程中附加其他信息。

5、编写程序,使用alarm函数在系统中设置一个定时器,期间对整数进行递减操作,并输出到屏幕。

6、现有一个应用程序在死循环中执行,要求用户让程序能够带捕捉用户按下的组合键Ctrl+C,终止应用程序的执行。

7、Linux系统提供了alarm( )和setitimer( )系统调用作为定时器的功能,要求用户使用这两个函数设计程序,让程序每隔一秒发出一个SIGALRM信号,每隔0.5秒发出一个SIGVTALRM信号。

8、编写程序,在主进程中创建一个子进程,子进程进行空循环,不停地输出“hello world!”字符串,主进程休眠一段时间后,

在主进程中结束子进程,随后主进程也退出。

9、编写程序,在程序中使用命令行形式显示程序所在当前文件

夹下的内容。

10、编写程序,得到当前进程的标识号,并将它打印输出,随后写入一个文件中。

11、在Linux系统下使用execl( )函数代替一个hello.c文件,在hello.c文件中实现从1到100的累加计算。

网络编程部分

1、在Linux系统下,通过TCP协议的套接字编程,在服务器端的计算机上实现累加求和的计算,数据全部从客户端传送,然后

在服务器端计算的和输出到终端,并传送回客户端。

2、在Linux系统下,实现IP地址转换,将名字地址转换为数字地址。

3、利用read函数编写读取客户端数据(提示在程序中,首先监听一个端口,如果有客户端连接这个端口则接受这个连接,然后用read函数读取远程主机发送的数据,输出这些数据以后结束这个程序)。

4、编程实现一个面向连接的套接字服务程序和客户端程序。客户端打开一个文件,把文件内容传送给服务器端,服务器端接受到文件内容后,保存在/tmp目录下。

选做题目:综合设计题目

1、实现一个飞机票网络售票系统的模拟程序。

2、实现一个银行代理收费服务器。

3、在linux下实现聊天室。

4、编写命令解释器sh

2016Linux程序设计复习题

一、填空题 1、在Linux 系统中,以文件方式访问设备。 2、Linux 内核引导时,从文件/etc/fstab 中读取要加载的文件系统。 3、Linux 文件系统中每个文件用i 节点来标识。 4、全部磁盘块由四个部分组成,分别为引导块、专用块、i 节点表块和数据存储块。 5、链接分为:硬链接和符号链接。 6、超级块包含了i 节点表和空闲块表等重要的文件系统信息。 7、某文件的权限为:drw-r--r-- ,用数值形式表示该权限,则该八进制数为:644 ,该文件属性是目录。 8、前台起动的进程使用Ctrl+C 终止。 9、静态路由设定后,若网络拓扑结构发生变化,需由系统管理员修改路由的设置。 10、网络管理的重要任务是:控制和监控。 11、安装Linux 系统对硬盘分区时,必须有两种分区类型:文件系统分区和交换分区。 12、编写的Shell 程序运行前必须赋予该脚本文件执行权限。 13、系统管理的任务之一是能够在分布式环境中实现对程序和数据的安全 保护、备份、恢复和更新。 14、系统交换分区是作为系统虚拟存储器的一块区域。 15、内核分为进程管理系统、内存管理系统、I/O 管理系统和文件管理系统等四个子系统。 16、内核配置是系统管理员在改变系统配置硬件时要进行的重要操作。 17、在安装Linux 系统中,使用netconfig 程序对网络进行配置,该安装程序会一步步提示用 户输入主机名、域名、域名服务器、IP 地址、网关地址和子网掩码等必要信息。 18、唯一标识每一个用户的是用户ID 和用户名。 19、RIP 协议是最为普遍的一种内部协议,一般称为动态路由选择协议。 20、在Linux 系统中所有内容都被表示为文件,组织文件的各种方法称为文件系统。 21、DHCP可以实现动态IP 地址分配。 22、系统网络管理员的管理对象是服务器、用户和服务器的进程以及系统的各种资源。 23、网络管理通常由监测、传输和管理三部分组成,其中管理部分是整个网络管理的 中心。 24、当想删除本系统用不上的设备驱动程序时必须编译内核,当内核不支持系统上的 设备驱动程序时,必须对内核升级。 25、Ping 命令可以测试网络中本机系统是否能到达一台远程主机,所以常常用于测试网络 的连通性。 26、vi 编辑器具有三种工作模式:命令模式、底行模式和输入模式。 27、可以用ls –al 命令来观察文件的权限,每个文件的权限都用10 位表示,并分为四段, 其中第一段占 1 位,表示文件类型,第二段占 3 位,表示文件所有者对该文件的权限。 28、进程与程序的区别在于其动态性,动态的产生和终止,从产生到终止进程可以具有的基 本状态为:运行态、就绪态和等待态(阻塞态)。 29、DNS实际上是分布在internet 上的主机信息的数据库,其作用是实现IP地址和主

Linux程序设计报告

Linux程序设计课程设计 Linux程序设计课程组 长春工业大学 2017-12-24

课程设计任务书

目录 第1章设计要求 (1) 2.1设计目的 (1) 2.2设计要求 (1) 第2章测试数据设计 (2) 第3章算法实现 (3) 第4章算法结果 (19) 第5章结果可视化 (21) 第6章性能分析 (21) 参考文献 (22) 心得 (22)

第1章设计要求 2.1设计目的 理解临界区和进程互斥的概念,掌握用信号量和PV操作实现进程互斥的方法。 2.2设计要求 在linux环境下编写应用程序,该程序运行时能创建N个线程,其中既有读者线程又有写者线程,它们按照事先设计好的测试数据进行读写操作。 读者/写者问题描述如下: 有一个被许多进程共享的数据区,这个数据区可以是一个文件,或者主存的一块空间,甚至可以是一组处理器寄存器。有一些只读取这个数据区的线程(reader)和一些只往数据区中写数据的线程(writer)。以下假设共享数据区是文件。这些读者和写者对数据区的操作必须满足以下条件:读—读允许;读—写互斥;写—写互斥。这些条件具体来说就是: (1)任意多的读线程可以同时读这个文件; (2)一次只允许一个写线程往文件中写; (3)如果一个写线程正在往文件中写,禁止任何读线程或写线程访问文件; (4)写线程执行写操作前,应让已有的写者或读者全部退出。这说明当有读者在读文件时不允许写者写文件。 对于读者-写者问题,有三种解决方法: 1、读者优先 除了上述四个规则外,还增加读者优先的规定,当有读者在读文件时,对随后到达的读者和写者,要首先满足读者,阻塞写者。这说明只要有一个读者活跃,那么随后而来的读者都将被允许访问文件,从而导致写者长时间等待,甚至有可能出现写者被饿死的情况。 2、写者优先 除了上述四个规则外,还增加写者优先的规定,即当有读者和写者同时等待时,首先满足写者。当一个写者声明想写文件时,不允许新的读者再访问文件。 3、无优先 除了上述四个规则外,不再规定读写的优先权,谁先等待谁就先使用文件。

浙江大学Linux程序设计实验报告

Linux程序设计实验报告1 ——操作系统基本命令使用 一、实验目的 1.通过对Emacs、vi、vim、gedit文本编辑器的使用,掌握在Linux环境下文本文件的编辑方法; 2.通过对常用命令mkdir、cp、cd、ls、mv、chmod、rm等文件命令的操作,掌握Linux操作系统中文件命令的用法。 二、实验任务与要求 1.emacs的使用,要求能新建、编辑、保存一个文本文件 2.vi或vim的使用,要求能新建、编辑、保存一个文本文件 3.gedit的使用,要求能新建、编辑、保存一个文本文件 4.掌握mkdir、cd命令的操作,要求能建立目录、进入与退出目录 5.掌握cp、ls、mv、chmod、rm命令的操作,要求能拷贝文件、新建文件、查看文件、文件重命名、删除文件等操作。 三、实验工具与准备 计算机PC机,Linux Redhat Fedora Core6操作系统 四、实验步骤与操作指导 任务1.学习emacs的使用,要求能新建、编辑、保存一个文本文件 (1)启动emacs (2)输入以下C程序 (3)保存文件为kk.c (4)用emacs打开文件kk.c (5)修改程序 (6)另存为文件aa.txt并退出。 任务2.vi或vim的使用,要求能新建、编辑、保存一个文本文件 (1)点击”应用程序”→ “附件”→“终端”,打开终端,在终端输入命令: [root@localhost root]#vi kk.c 按i键,进入插入状态。 (2)输入以下C程序 #include int main( ) {

printf(“Hello world!\n”); return 0; } 此时可以用Backspace、→、←、↑、↓键编辑文本。 (3)保存文件为kk.c 按Esc键,进入最后行状态,在最后行状态输入:wq保存文件,退出vi。 (4)用vi打开文件kk.c,输入命令: [root@localhost root]#vi kk.c (5)修改程序为: #include int main( ) { printf(" Hello world!\n"); printf("*****************\n"); return 0; } (6)按Esc键,进入最后行状态,在最后行状态输入:wq aa.txt保存文件,如图1所示,另存为文件aa.txt并退出vi。。 图1 程序编辑环境 任务3.gedit的使用,要求能新建、编辑、保存一个文本文件 (1)启动gedit,点击”应用程序”→ “附件”→“文本编辑器”,打开文本编辑器,如图所示。

Linux程序设计模式(机制与策略)

Linux程序设计模式—机制与策略 什么是设计模式(Design pattern)? 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、软件设计经验的总结。使用设计模式是为了提高代码或模块的重用、让程序更容易被他人理解、提高代码可靠性和可维护性。同时,通过学习设计模式可以降低解决一般性问题的开发难度。 Linux程序设计模式的起源和发展 Linux程序的设计模式起源于Unix文化,是Unix哲学的重要组成部分,而Linux本身就是Unix的一个发展分支。Unix哲学说来不算是一种正规设计方法,它是自下而上的,而不是自上而下的。Unix哲学注重实效,立足于丰富的经验。你不会在正规方法学和标准中找到它,它更接近于隐性的半本能的知识,即Unix文化所传播的专业经验。它鼓励那种分清轻重缓急的感觉,以及怀疑一切的态度,并鼓励你以幽默达观的态度对待这些。 什么是Unix哲学? Unix管道的发明人、Unix传统的奠基人之一Doug McIlroy在[McIlroy78]中曾经说过: I. 让每个程序就做好一件事。如果有新任务,就重新开始,不要往原程序中加入新功能而搞得复杂。 II. 假定每个程序的输出都会成为另一个程序的输入,哪怕那个程序还是未知的。输出中不要有无关的信息干扰。避免使用严格的分栏格式和二进制格式输入。不要坚持使用交互式输入。 III. 尽可能早地将设计和编译的软件投入试用, 哪怕是操作系统也不例外,理想情况下, 应该是在几星期内。对拙劣的代码别犹豫,扔掉重写。 IV. 优先使用工具而不是拙劣的帮助来减轻编程任务的负担。工欲善其事,必先利其器。后来他这样总结道(引自《Unix的四分之一世纪》): Unix哲学是这样的:一个程序只做一件事,并做好。程序要能协作。程序要能处理文本流,因为这是最通用的接口。 从整体上来说,可以概括为以下几点: 01.模块原则:使用简洁的接口拼合简单的部件。 02.清晰原则:清晰胜于机巧。 03.组合原则:设计时考虑拼接组合。 04.分离原则:策略同机制分离,接口同引擎分离。 05.简洁原则:设计要简洁,复杂度能低则低。 06.吝啬原则:除非确无它法,不要编写庞大的程序。 07.透明性原则:设计要可见,以便审查和调试。 08.健壮原则:健壮源于透明与简洁。 09.表示原则:把知识叠入数据以求逻辑质朴而健壮。 10.通俗原则:接口设计避免标新立异。 11.缄默原则:如果一个程序没什么好说的,就沉默。 12.补救原则:出现异常时,马上退出并给出足够错误信息。 13.经济原则:宁花机器一分,不花程序员一秒。 14.生成原则:避免手工hack,尽量编写程序去生成程序。 15.优化原则:雕琢前先要有原型,跑之前先学会走。 16.多样原则:决不相信所谓“不二法门”的断言。 17.扩展原则:设计着眼未来,未来总比预想来得快。 给大家推荐一本书《UNIX 编程艺术》————这不是一本讲如何编程的书,而是一本讲UNIX设计哲学的书,当然也适应于Linux。这本书是我来威胜工作后,同事们推荐我读的第二

Linux程序设计考试例题

例题1程序A生成1个文件,其大小为1000字节,其内容为小写字母abcd...z的循环。试编写该程序。 文件名t 1.c #include #include int main(){char x; int i; int fd=open("aa",O_CREAT|O_TRUNC|O_WRONLY,0666); if(fd<0){printf("open file error!\r\n");exit (0);}; for(i=0;i<1000;i++){x='a'+(i%26); write(fd,&x,1);}close(fd);}例题2读出一个文件a.txt的倒数第2个字节和倒数第1个字节,显示在屏幕上。并且显示出当前时间。 文件名t 2.c #include #include #include int main(){char x[2]; int fd=open("a.txt",O_RDONLY); if(fd<0){printf("open file error!\r\n");exit

lseek(fd,-3,SEEK_END); read(fd,x,2); printf("倒数第二和第一字节为%c%c\r\n",x[0],x[1]); close(fd); time_t t; time(&t); printf("当前时间: %s",asctime(localtime(&t)));}例题3产生一个进程树父进程有3个子进程,这三个子进程分别有2个子进程。每个进程退出前打印自己的进程id号 文件名t 3.c #include #include int main(){int ret,i; for(i=0;i<3;i++){ret=fork(); if(ret==0)break;}if(ret==0) for(i=0;i<2;i++){ret=fork(); if(ret==0)break;}sleep (10); printf("thread %d is exiting now \r\n",getpid());}测试方法: 在另一窗口

Linux程序设计2018年度-2018年度期末试地的题目部分问题详解小东编辑

兰州商学院2011-2012学年第二学期期末考试 Linux 程序设计 试卷A 一、单项选择题(每小题1分,共计20分) 1. Linux 在确定文件名filename 是否代表目录文件时,依据( C )。 A. 由程序员指定 B. filename 是否位于/etc 目录中 C. 该文件i 结点中的类型信息 D. filename 中的扩展名 2. 在进程p1中用系统函数execvp 执行程序p2,则( D )。 A. p1创建一个子进程执行p2 B. p2结束后返回prog1继续执行 C. p1和p2并行执行 D. p2将替换掉prog1的代码 3. 进程调用wait 将被阻塞,直到( D )。 A. 用户按任意键 B. 收到时钟信号 C. 子进程被创建 D . 子进程结束

4. Shell脚本中的注释用( C )标记。 A. // B. /*…*/ C. # D. * 5. head命令用于( B )。 A. 显示文件的前10行 B. 显示C语言头文件 C. 显示目录的前10行 D. 显示 6. bind调用用于( A )。 A. 为socket分配地址 B. 客户端与服务器连接 C. 接收socket上的连接 D. 监听socket上的连接 7. 一个进程收到SIGCHILD信号,表示( B )。 A. 创建子进程成功 B. 创建子进程失败 C. 子进程结束 D. 子进程开始运行 8. 当客户端用GET命令请求某文件时,Web服务器用返回码( B )表示没有该文件。 A. 200 B. 404 C. 8080. ②exit(0) 9. 删除命名管道的系统调用是( A )。 A. unlink B. close C. fcolse D. dup2 10. 设可能有多个线程调用pthread_cond_wait(&buf_empty, &lock)后等待条件变量 buf_empty,当某线程pt1调用pthread_cond_signal(&buf_empty)后,( B )。 A. 所有等待buf_empty的线程被唤醒 B. 有一个等待buf_empty的线程被唤醒

Linux程序设计实验报告.doc

Linux程序设计实验报告 Linux程序设计实验报告姓名学号班级指导教师2008年3月实验一Linux基本命令的使用1、实验内容和步骤步骤1以user_login用户身份并使用telnet登录Linux 服务器login (输入username)password (输入密码)步骤2使用新创建的用户账户和口令登录Linux系统,察看登录后的界面。 Adduser tty1 步骤3使用pwd命令,然后用ls命令,使用-a,-l,-F,-A,-lF等不同选项并比较不同之处。 [rootteacher ] pwd /root ls anaconda-ks.cfg Documents install.log.syslog Pictures Videos chapter15 Downloads kk Public Desktop install.log Music Templates ls -a 显示出包含隐藏文件的所有文件ls -F 显示出当前目录下的文件及其类型ls -l 显示目录下所有文件的许可权、拥有者、文件大小、修改时间及名称ls -R 显示出该目录及其子目录下的文件步骤4在当前目录下建立一个名为test的新目录,然后将工作目录切换到test下,尝试将/etc目录下的文件passwd拷贝到该目录下(cp 源文件目的目录)。 察看当前目录下的passwd文件的属主和文件权限。 Mkdir test cp /etc/passwd test ls -l total 4 -rw-r--r--. 1 root root 2755 2010-06-11 1315 passwd 步骤5尝试向当前目录下的passwd文件和/etc/passwd文件分别写入一些新内容,用

Linux程序设计实验

Linux程序设计实验7 ——进程通信1 一、实验目的 1.掌握常用的几种中断方法; 2.掌握signal函数实现信号处理程序设计院; 3.掌握多信号时的信号处理程序编写; 4.掌握应用管道实现信号处理的方法。 二、实验任务与要求 1.alarm函数产生的SIGALRM信号; 2.应用signal函数实现信号处理程序编写; 3.多信号时的信号处理程序编写; 4.应用管道实现信号处理的编写; 三、实验工具与准备 计算机PC机,Linux Redhat Fedora Core6操作系统 四、实验步骤与操作指导 任务1:硬中断实例 运行下列程序kk1.c: #include int main(void) { while(1); return 0; } (1)程序运行过程中,请你使用硬中断Ctrl+C或Ctrl-\中断程序的执行。 (2)可以使用信号SIGSEGV中断此程序,方法是先在后台运行此程序,得出程序进程号,然后用命令kill发送信号SIGSEGV,如下形式:

[root@localhost root]# ./kk & [root@localhost root]# [1] 7940 [root@localhost root]# kill -SIGSEGV 7940 根据提示,运行程序,结果如下: 任务2:使用软件中断。alarm函数和SIGALRM信号,调用alarm函数设定一个闹钟,告诉内核在seconds秒之后给当前进程发SIGALRM信号,该信号的默认处理动作是终止当前进程。这个函数的返回值是0或者是以前设定的闹钟时间还余下的秒数。 程序源代码kk2.c: #include #include int main(void) { int counter; alarm(10); for(counter=0; 1; counter++) printf("counter=%d ", counter); return 0; } 程序的作用是10秒钟之内不停地数数,10秒钟到了就被SIGALRM信号中断。 程序运行结果:

Linux程序设计考试例题

例题1 程序A生成1个文件,其大小为1000字节,其内容为小写字母abcd...z的循环。试编写该程序。 文件名t1.c #include #include #include int main() { char x; int i; int fd=open("aa",O_CREAT|O_TRUNC|O_WRONLY,0666); if(fd<0){printf("open file error!\r\n");exit(0);}; for(i=0;i<1000;i++) { x='a'+(i%26); write(fd,&x,1); } close(fd); } 例题2 读出一个文件a.txt的倒数第2个字节和倒数第1个字节,显示在屏幕上。并且显示出当前时间。 文件名t2.c #include #include #include #include int main() { char x[2]; int fd=open("a.txt",O_RDONLY); if(fd<0){printf("open file error!\r\n");exit(0);}; lseek(fd,-3,SEEK_END); read(fd,x,2); printf("倒数第二和第一字节为%c %c\r\n",x[0],x[1]); close(fd); time_t t; time(&t); printf("当前时间:%s",asctime(localtime(&t))); }

Linux程序设计报告

昆明理工大学信息工程与自动化学院学生上机报告 (2012 —2013 学年第二学期) 年级、专业、班计科 102 学号姓名成绩 实验项目名称Linux程序设计上机报告指导教师欧阳鑫 教师评语 该同学是否了解相关理论: A.了解□ B.基本了解□ C.不了解□该同学的动手能力: A.强□ B.中等□ C.差□ 该同学的上机是否达到要求:A.达到□ B.基本达到□ C.未达到□上机实验报告是否规范: A.规范□ B.基本规范□ C.不规范□上机实验过程是否详细记录: A.详细□ B.一般□ C.没有□ 注:5个A 为优4个A为良3个A 为及格其余为不及格。 教师签名: 年月日 目录 上机实验一:虚拟机及Linux安装……………………………………………….2页

上机实验二:Linux下Shell程序开发……………….…………………………14页上机实验三:Linux下多进程多线程程序开发…………………………………20页 上机一:虚拟机及Linux安装 一、上机目的 1、安装虚拟机 2、在虚拟机上安装Red Hat Enterprise Linux 5 二、相关技术阐述 根据四的步骤一步一步安装实现,其中在安装虚拟机过程中用到下面代码: (1)su (2)chmod +w /etc/inittab (3)vi /etc/inittab (4)reboot 三、所用软件系统 VMware Workstation 、Red Hat Enterprise Linux 5 四、源代码或上机步骤 1、虚拟机(VMware Workstation)安装过程

(1) 单击VMware-workstation-full-9.0.2-1031769_https://www.wendangku.net/doc/7116523782.html,.exe可执 行文件,进入安装: (2)进入一下界面: (3)选择安装目录 (4)点击下一步 (5)点击下一步

Linux程序设计知识点整理

Prerequisite 一、Linux 命令 1、文件操作 列出目录内容: ls, dir, vdir 创建特殊文件: mkdir, mknod, mkfifo 文件操作: cp, mv, rm 修改文件属性: chmod, chown, chgrp, touch 查找文件: locate, find 字符串匹配: grep(egrep) 其它: pwd, cd, ar, file, grep, tar, more, less, head, tail, cat 2、进程操作 ps, kill, jobs, fg, bg, nice 3、其它 who, whoami, passwd, su, uname, … man 二、Linux工具 编辑工具:vi, emacs 编译、链接:gcc(GNU C Compiler -> GNU Compiler Collection) 调试:gdb make命令 版本控制工具:CVS等 三、编程语言 1、High-level Language:C/C++, Java, Fortran… 2、ELF binary format:Excutable and Linkable Format(工具接口标准委员会(TIS)选择了正在发展中的ELF体系上不同操作系统之间可移植的二进制文件格式) 四、GCC使用 -E: 只对源程序进行预处理(调用cpp预处理器) -S: 只对源程序进行预处理、编译 -c: 执行预处理、编译、汇编而不链接 -o output_file: 指定输出文件名 -g: 产生调试工具必需的符号信息 -O/On: 在程序编译、链接过程中进行优化处理

Linux程序设计

Linux程序设计课程简介和教学大纲格式 课程代码:21188100 课程名称:Linux程序设计 学分: 2.0 周学时总48学时(短学期) 面向对象:计算机科学与技术、软件工程数字媒体专业,三年级学生 预修课程要求:程序设计类课程 一、课程介绍(100-150字) (一)中文简介 本课程主要介绍Linux操作系统的安装、使用和管理。包括Linux的文件和文件系统结构,进程概念和管理,文件安全和共享,I/O重定向和管道,以及各种实用软件的使用,shell 程序设计,Linux系统程序设计。 (二)英文简介 This course introduces the Linux operating system installation、use and administration. Include Files and File System Structure,Process concept and administration ,File Security and File Sharing, I/O Redirection and Piping ,And the use of a variety of utility software , shell Programming, Introductory Linux system Programming. 二、教学目标 (一) 学习目标 本课程的目的是使学生熟悉Linux系统环境,通过本课程的学习能够使用、管理和维护Linux系统,掌握shell程序设计和Linux系统程序设计基本方法。本课程为学习“操作系统原理”和“操作系统分析及实验”课打下基础。 (二)可测量结果 通过本课程的学习能达以下目标: 1.了解Linux操作系统,学习并领会自由软件(Free Software)的思想和文化; 2.掌握Linux操作系统的安装; 3.掌握linux的文件、进程概念,管道及I/O重定向; 4.掌握linux系统常用命令、实用程序的使用和管理,熟悉Linux下各种工具软件的使 用; 5.了解Linux环境下开发环境和桌面系统; 6.了解shell编程,掌握基本的shell程序设计; 7.Linux环境下的API编程以及Linux的系统调用。 三、课程要求 (一)授课方式与要求

linux程序设计期末复习资料

1.GPL的含义是什么? 答:GPL,是General Public License的缩写,GNU通用公共许可证。 2.Linux的常用shell指令有哪些? (1)重定向输出的例子ls -1> lsoutput.txt ls -l >> lsoutput.txt 0:标准输入1:标准输出2:标准错误输出 (2)重定向输入的例子more < killout.txt (3)管道的例子ls -l | more (4)Hello World例子: #!/bin/bash #! 用来指明shell程序本身所在的位置 # It is a very simple example # 表示行注释 echo Hello the World echo是bash中的一个指令,显示 (5)shell程序的执行: a:在shell中输入指令bash hello b:在shell中输入指令chmod 755 hello ./hello (6)交互式输入read STR:运行该指令后,shell会停止等待输入,以回车键结束,此时不需要加引号,即使包含空格;如果加了引号,则引号将作为变量值的一部分。(7)bash的变量:bash中的变量不需要事先定义类型;默认为字符串,特殊标记为整型,没有浮点型;字符串含空格时必须使用双引号,不含空格可不用;赋值符号前后不能有空格;引用时,加${变量名},花括号可省略。 bash的变量(eg2_1) #!/bin/bash STR=Hello echo $STR echo $STR STR=7+5 STR=“Hello world”echo $STR echo $STR echo STR STR=Hello world (8)引号的作用:参数值中包含空白符号,就需要使用引号;如果双引号中含有以$开头的变量的引用,则需要使用变量值;如果是单引号中含有$的变量引用,则使用元符号,

linux程序设计

◆如用户有目录的写权限,则可以创建、删除目录下的任何文件或子目录,即使 该文件或子目录属于其他用户。 ◆必须有读和执行权限才可以使用“ls –l ”列出目录清单 ●void *类型的指针可以和任何其他类型的指针相互赋值而不会丢失任何信 息 ●malloc函数不会对分配到的空间进行清零,因此其内容是随机的 ●calloc函数返回一个指向包含nr个元素数组的指针,每个元素大小为size 个字节。calloc会对分配到的内存初始化,把每个比特置为0 ●realloc函数能够改变以前分配的内存块的大小,第1个参数ptr必须是由 malloc或calloc返回的指针,第2个参数size既可以大于旧内存块的大小,也可以小于它。 ●realloc不对增加的内存块初始化;realloc如果不能扩大内存块就返回 NULL,并保持原来ptr指向的内存区域不动;realloc的第一个参数为 NULL,其作用和malloc函数一样;realloc的第二个参数如果为0,则释放原来的内存块 ●内存分配后一定要记得用free释放,其参数为先前用malloc或call oc返 回的指针 文件系统用目录来组织文件 目录文件的结构非常简单,就是一系列目录项(dirent)的列表。每个目录

项,由两部分组成:所包含文件的文件名,以及该文件名对应的inode号码。 守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程常常在系统引导装入时启动,在系统关闭时终止。 Setsid()的作用:让进程摆脱原会话的控制 让进程摆脱原进程组的控制 让进程摆脱原控制终端的控制

2016Linux程序设计复习题

一、填空题 1、在Linux系统中,以文件方式访问设备。 2、Linux内核引导时,从文件/etc/fstab 中读取要加载的文件系统。 3、Linux文件系统中每个文件用i节点来标识。 4、全部磁盘块由四个部分组成,分别为引导块、专用块、i节点表块和数据存储块。 5、链接分为:硬链接和符号链接。 6、超级块包含了i节点表和空闲块表等重要的文件系统信息。 7、某文件的权限为:drw-r--r--,用数值形式表示该权限,则该八进制数为:644 ,该文件属性是目录。 8、前台起动的进程使用Ctrl+C 终止。 9、静态路由设定后,若网络拓扑结构发生变化,需由系统管理员修改路由的设置。 10、网络管理的重要任务是:控制和监控。 11、安装Linux系统对硬盘分区时,必须有两种分区类型:文件系统分区和交换分区。 12、编写的Shell程序运行前必须赋予该脚本文件执行权限。 13、系统管理的任务之一是能够在分布式环境中实现对程序和数据的安全保护、备份、恢复和更新。 14、系统交换分区是作为系统虚拟存储器的一块区域。 15、内核分为进程管理系统、内存管理系统、I/O管理系统和文件管理系统等四个子系统。 16、内核配置是系统管理员在改变系统配置硬件时要进行的重要操作。 17、在安装Linux系统中,使用netconfig程序对网络进行配置,该安装程序会一步步提示用户输入主机名、域名、域名服务器、IP地址、网关地址和子网掩码等必要信息。 18、唯一标识每一个用户的是用户ID 和用户名。 19、RIP 协议是最为普遍的一种内部协议,一般称为动态路由选择协议。 20、在Linux系统中所有内容都被表示为文件,组织文件的各种方法称为文件系统。 21、DHCP可以实现动态IP 地址分配。 22、系统网络管理员的管理对象是服务器、用户和服务器的进程以及系统的各种资源。 23、网络管理通常由监测、传输和管理三部分组成,其中管理部分是整个网络管理的中心。 24、当想删除本系统用不上的设备驱动程序时必须编译内核,当内核不支持系统上的设备驱动程序时,必须对内核升级。 25、Ping命令可以测试网络中本机系统是否能到达一台远程主机,所以常常用于测试网络的连通性。 26、vi编辑器具有三种工作模式:命令模式、底行模式和输入模式。 27、可以用ls –al命令来观察文件的权限,每个文件的权限都用10位表示,并分为四段,其中第一段占1 位,表示文件类型,第二段占3位,表示文件所有者对该文件的权限。 28、进程与程序的区别在于其动态性,动态的产生和终止,从产生到终止进程可以具有的基本状态为:运行态、就绪态和等待态(阻塞态)。 29、DNS实际上是分布在internet上的主机信息的数据库,其作用是实现IP地址和主

《Linux程序设计》实验指导书

《Linux程序设计》实验指导书 实验类别:课内实验实验课程名称:Linux程序设计 实验室名称:软件工程专业实验室实验课程编号:N03140112 总学时: 32 学 分: 2 适用专业:软件工程 先修课程: Linux操作系统、C程序设计 实验在教学培养计划中地位、作用: 通过讲授Linux的操作使用、系统结构和Linux环境下的程序设计,使学生对Linux操作系统获得一个全面的认识和掌握。一方面,学生通过学习系统程序设计,能够复习操作系统中的基本概念,对文件管理、进程控制有更深入的理解;另一方面,学生学会在Linux环境下工作,进一步熟悉C语言程序设计和数据结构的知识,编写进行系统维护的脚本文件和实用化的大型应用程序,如网络应用程序。同时,本课程为学生进一步学习其它后续课程(如高级操作系统、Linux内核源代码分析、嵌入式系统等)打下基础。

《Linux程序设计》实验大纲 Linux Program Design 课程类别:学科专业教育课程课程名称:Linux程序设计 开课单位:软件学院课程编号:N03140112 总学时:32 学分:2 适用专业:软件工程 先修课程:程序设计基础 一、实验教学目标 熟练掌握shell编程、熟练使用linux系统、掌握进程控制和进程间通信,学会编写网络程序,学会在linux环境中编写web程序。养成一种良好的程序设计风格。 二、实验环境 Linux

三、实验教材及参考书: [1] 实验指导书(自编讲义) [2]《Linux环境C程序设计》徐诚高莹婷等清华大学出版社2010.1 [3]《linux入门到精通》刘忆智清华大学出版社2010.1 四、实验成绩评定方式 根据学生在实验过程中的认真程度、上机结果验收情况以及实验报告撰写质量,进行综合评定。 五、实验项目及学时分配

Linux程序设计实验报告

《Linux程序设计》 实验报告 安徽工业大学计算机学院 2009年6月

实验一 Linux基本命令的使用 1、实验目的 学习和掌握Linux的基本命令。 2、实验内容和步骤 步骤1:以user_login用户身份并使用telnet登录Linux服务器,按照提示创建自己的账户和口令。 步骤 2:使用新创建的用户账户和口令登录Linux系统,察看登录后的界面。 步骤3:使用pwd命令察看当前的工作目录,然后用ls命令查看当前目录下的内容,尝试使用-a,-l,-F,-A,-lF等不同选项并比较不同之处。 步骤4:在当前目录下建立一个名为test的新目录,然后将工作目录切换到test下,尝试将/etc目录下的文件passwd拷贝到该目录下(cp 源文件目的目录)。察看当前目录下的passwd文件的属主和文件权限。

步骤5:尝试向当前目录下的passwd文件和/etc/passwd文件分别写入一些新内容(可使用echo “字符串” >>文件的命令),看看操作能否成功,如果不能成功,请说明原因。用cat命令浏览文件password的内容,用more命令进行浏览翻页操作,再用less命令浏览文件的内容。比较这几个命令的不同之处 步骤6:用ls命令查看test下文件的权限,用mv命令更改文件password的文件名为test.txt,尝试用chown和chgrp更改文件的属主为root、组为root,看看能否成功,不成功,请说明原因。尝试用chomd将文件权限为“-rw-------”。看看能否成功,不成功,请说明原因。

步骤7:用rm命令删除test目录下的所有文件,再用rmdir命令删除test目录。(想一想有没有一条命令将目录及目录下的所有文件删除,写出这条命令) 步骤8:使用ps命令查看当前系统内的进程,并利用man命令获取ps命令的参数,写出获取当前终端进程执行情况的ps命令。

浙江大学Linux程序设计实验报告1

浙江大学Linux程序设计实验报告1 课程名称:嵌入式程序设计实验实验名称:基于虚拟机的Linux操作系统安装 学生姓名:专业:学号: 同组学生姓名:指导老师:成绩: 一、实验目的 本实验主要内容是Vmware虚拟软件和LINUX系统的安装,Vmware是一款功能相当的强大的虚拟软件,它可以虚拟一台计算机的硬件,如虚拟CPU、内存、硬盘、网卡、串口、USB接口等等;通过Vmware虚拟软件可以实现在windows系统下运行Linux系统,当然它也支持windows系统,而且可以与windows系统进行交互,非常人性化;但是,在vmware 虚拟软件上再运行另一个系统,硬件设备要求较高,物理内存最好为有1G;这样在vmware 上就可以分配虚拟内存配置为512M,这样在vmware下跑Linux系统才能顺畅。 二、实验内容 1. 在Windows环境下安装虚拟机。 2.在运行虚拟机后,安装Linux操作系统。 3.启动Linux操作系统。 三、实验设备 1. PC 操作系统WIN98 或WIN2000 或WINXP。 2.虚拟机软件。 3.Linux镜像文件。 四、实验步骤 第一部分:虚拟机的安装 步骤1 在网络上下载一个最新版本的针对Windows系统的VMware-workstation,下面我们安装的是VMware-workstation5.0版本。双击此软件后,就会出现以下画面:

图1-1 欢迎界面 单击“next”按钮 步骤2 进入安装协议界面,具体如图1-2所示。 图1-2安装协议界面 选中“yes,I accept the terms in the license agreement”,单击“next”按钮步骤3 进入选择安装路径的界面,具体如图1-3所示。

相关文档
相关文档 最新文档