当前位置:文档之家› Linux程序设计

Linux程序设计

Linux程序设计
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的系统调用。

三、课程要求

(一)授课方式与要求

短学期课程时间为两周,本课程讲课课时数为20学时,其余时间为学时独立完成4个大实验。任课教师或助教指导学生完成实验内容。

实验内容中没有安排Linux操作系统的安装,要求学生自己去做安装的实验,能独立完成Linux的安装工作。

本课程学生可以选择做难度较大的附加题,附加题可以替换实验1-4所有的必做题。

学生完成实验后要撰写实验报告,并以电子版形式提交到课程网站。要求学生在实验报告中,提交源程序、实验过程中的截图和运行结果等。

(二)考试评分与建议

短学期课程不进行书面考试,本课程评分依据是学生完成的实验结果,本课程有4个大实验,要求学生独立完成。

课程实验报告占85%,平时成绩占15%。

四、教学安排

(一)教学内容

第1章Linux的概述、安装(2学时)

了解Linux操作系统的历史,GNU/Linux操作系统构成、发展,了解开源软件,掌握Linux系统的安装。

1.1 Linux操作系统和开源软件

1.2 Linux的安装

第2章Linux基础(1学时)

了解Linux操作系统的结构和主要组成部分。掌握Linux系统登录和退出过程。了解Linux shell,shell的元字符,内部命令和外部命令。并且学习一些简单常用的Linux命令。

2.1 登录和退出

2.2 Linux的shell

2.3 shell的一些基本命令

2.4 文本编辑器

第3章Linux文件管理操作(1学时)

了解Linux系统的文件类型,Linux文件系统的目录结构和一些相关术语。掌握如何创建和删除目录,如何在文件系统中移动目录,如何使用路径名来访问位于不同目录下的文件。掌握Linux下针对普通文件操作工具,一些创建和操作文件的命令。

3.1 文件类型

3.2 文件系统目录结构

3.3 目录操作的基本命令

3.4 文件操作的基本命令

3.5 显示字符串echo

3.6 命令行中使用扩展符

第4章高级文件管理(1学时)

学习压缩、解压和打包文件命令,学习如何排序文本文件,如何搜索文件或目录,如何查找文本文件的内容,如何搜索某个Linux命令存放在何处。学习使用gzip、gunzip、sort、find、where、which、grep、rpm等命令

4.1 正则表达式

4.2 排序文件

4.3 查找文件

4.4 搜索文件内容

4.5命令记录

4.6 压缩文件、解压缩文件与打包文件

4.7 RPM包管理

第5章文件权限与文件共享(1学时)

主要介绍Linux的文件访问权限,用户的类型和文件访问权限的类型;学习如何确定一个文件的访问权限;如何设置和改变一个文件的访问权限;如何在文件或目录的创建时设置缺省访问权限。介绍硬链接、符号链接,学习使用chmod、ln等命令

5.1 存取权限

5.2 改变文件的存取权限

5.3 特殊权限位SUID、SGID、Sticky

5.4 硬链接

5.5符号链接

第6章Linux进程(2学时)

讨论Linux进程的属性。学习理解Linux的前台进程、后台进程及守护进程。学习理解Linux命令的顺序执行和并发执行。学习使用挂起进程操作和终止进程操作,了解系统中Linux进程的层次结构。学习使用ps、kill、fg、bg、top、pstree等命令

6.1进程的属性

6.2 进程的终止

6.3 进程和作业控制

6.4命令行中使用操作符

6.5 Linux系统启动和进程层次结构

6.6 开机和关机设定

第7章管道和重定向(1学时)

学习使用Linux的I/O重定向操作和管道操作。学习使用|、<、>、tee等命令

7.1 输入重定向

7.2 输出重定向

7.3 使用文件描述符

7.4组合使用输入和输出重定向

7.5 管道(pipe)

第8章Bourn Again Shell编程(6学时)

学习bash基本概念、bash变量,bash脚本令行参数传递、脚本命令替换的概念,bash 脚本的基本语句规则。掌握bash几个重要的高级特性,包括数值数据处理、数组处理、here

文件(here document)、信号及信号处理、shell脚本中标准文件的重定向。还将学习bash的函数定义和使用。

8.1 bash脚本的建立和运行

8.2 shell的变量

8.3 shell脚本位置参数的传递

8.4 控制结构语句

8.5 其他几个有用的语句

8.6 数值处理

8.7 数组

8.8 函数

8.9 here文档

8.10 exec命令

8.11 trap命令

8.12 调试脚本程序

第9章Linux系统C语言开发工具(1学时)

用C语言编程的常用工具,主要学习gcc、make等工具。

9.1编写程序的工具

9.2编译C语言程序

9.3模块化的设计工具—make

第10章Linux系统程序设计(4学时)

10.1Linux系统调用

10.2进程的创建,进程的执行

10.3进程的等待和进程的终止

10.4文件描述符

10.5文件操作

10.6目录操作

(二)实验内容

实验1 Linux shell基本命令

1.学习登录和退出Linux系统

2.初步了解Linux的命令格式

3.学会如何得到帮助信息

4.掌握一些常用的Linux命令

5.使用vi、gedit、emacs编辑器编辑文本文件

6.学习如何创建一个Linux目录的层次结构

7.学习如何有效浏览Linux目录层次;

8.学习有关文件内容类型和隐含文件;

9.学习如何显示文本文件的内容,如何复制、追加、移动和删除文件

10.学习如何合并文件,学习如何排序文本文件

11.学习如何搜索文件或目录,学习如何查找文本文件的内容

12.学习如何压缩、解压和打包文件

实验2 Linux使用进阶

1.学习如何创建和使用硬链接和软(符号)链接;

2.学习关于链接和文件访问权限之间的关系;

3.学习关于硬链接和软链接的本质内容。

4.学习如何使用Linux的I/O重定向和管道操作;

5.学习使用I/O重定向和管道操作完成单个命令不能实现的复杂任务;

6.学习如何使用I/O重定向、管道去完成单个命令不可能实现的复杂任务。

7.学习Linux的文件访问权限,用户的类型和文件访问权限的类型;

8.学习如何设置和改变一个文件的访问权限;

9.学习如何在文件或目录的创建时设置缺省访问权限;

10.了解有关Linux进程的属性;

11.学习有关Linux的前台、后台进程;

12.学习有关Linux命令的顺序执行和并发执行;

13.学习有关挂起和终止进程;

实验3 SHELL程序设计

1.学会shell程序如何执行

2.学习使用shell的环境变量和用户变量

3.学会shell 脚本的命令行参数是如何传给shell程序的

4.学习脚本命令替换

5.通过编写脚本程序,学会编写shell 脚本程序设计的方法

实验4 系统程序设计

1.学习如何使用Linux的C语言工具完成代码编辑,编译,运行程序

2.学习掌握gcc、make工具,Makefile文件的规则

3.学习使用系统调用编写程序

4.进程的创建(fork),进程的执行(exec函数簇),进程的等待(wait和waitpid函数),

进程的终止(kill、exit)

5.文件和目录操作

五、参考教材及相关资料

教材:

1.Linux程序设计,严冰、刘加海、季江民,浙江大学出版社,201

2.2

参考书:

1.边干边学—Linux内核指导,李善平、季江民、尹康凯,浙江大学出版社,2008.4

2.UNIX环境高级编程(第2版),W.Richard Stevens,尤晋元译,人民邮电出版社,

2006.5

3.Linux程序设计(第3版),Neil Matthew;Richard Stones著,陈健;宋健建译,人民

邮电出版社,2007.7

4.LINUX教程(linux:the textbook),Syed Mansoor Sarwar,李善平等译,清华大学

出版社,2005.6

六、课程教学网站:

https://www.doczj.com/doc/948909266.html,/exercise/index.php

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系统编程试卷(答案)

凌阳教育 嵌入式培训系统编程部分测试试题 注:考试为闭卷,程序题需上机操作运行出结果,考试时间为120分钟 一:选择题(本题共4小题,每题3分共12分) 1)下列不是Linux系统进程类型的是( D ) A 交互进程 B 批处理进程 C 守护进程 D 就绪进程(进程状态) 2)以下对信号的理解不正确的是( B ) A 信号是一种异步通信方式 B 信号只用在用户空间进程通信,不能和内核空间交互 C 信号是可以被屏蔽的 D 信号是通过软中断实现的 3)进程有三种状态( C ) A 准备态、执行态和退出态 B 精确态、模糊态和随机态 C 运行态、就绪态和等待态 D 手工态、自动态和自由态 4)不是进程和程序的区别( B) A 程序是一组有序的静态指令,进程是一次程序的执行过程 B 程序只能在前台运行,而进程可以在前台或后台运行 C 程序可以长期保存,进程是暂时的 D 程序没有状态,而进程是有状态的 二:填空题(本题共6小题,2)、3)两题每空四分,其余每空一分。共23分) 1) 列举八种常见的进程间通信方式无名管道、有名管道、消息队列、信号量、共享内存、信号、套接字 网络上两个主机的进程间通信方式为套接字 2) 命名管道比无名管道的优势提供了一个可以访问的路径名,实现没亲缘关系的进程 间通信 3) 消息队列比命名管道和无名管道的优势可以按类型实现消息的随机查询,没必要先 进先出 4) 按照逻辑结构不同进行数据库划分,Sqlite 数据库属于哪一类关系型数据库 5) 在C语言中操作sqlite数据库,常用的2中方式是sqlite_exec(回调)、

sqlite_gettable(非回调) 6) 列举四种进程调度算法先来先调度(FCFS)、短进程优先调度(SPF)、高优先级调度 (HPF)、时间片轮转调度 三:问答题(本题共7题,每题5分,共35分) 1) 什么是系统调用?系统调用是通过什么方式陷入内核态的?请写出你对系统调用的理解。什么是文件I/O和标准I/O库?文件I/O和标准I/O库的区别? 系统调用是指操作系统提供给用户程序调用的一组特殊接口,用户程序可以通过这组接口获得操作系统内核提供的服务。 系统调用是通过软件中断方式陷入内核的 linux的文件I/O是由操作系统提供的基本IO服务, 标准I/O库通过封装系统调用,提供了一个到底层I/O的接口。 标准I/O默认采用了缓冲机制,还创建了一个包含文件和缓冲区相关数据的数据结构;文件I/O一般没有采用缓冲模式,需要自己创建缓冲区。一种是标准库封装系统调用而成,更高级,一种是系统提供的,比较低级;标准I/O可移植性高、文件I/O可移植性低。 2) 什么是进程?用fork()创建一个子进程时,系统会做什么工作 进程是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配的单位,不仅是系统内部独立运行的实体也是独立竞争资源的实体。 用fork()时系统会分配子进程一个ID号然后继承父进程的地址空间,包括进程上下文进程堆栈打开的文件描述符等等,他就是父进程的一个复制品。 3) 进程和线程有什么区别? 每个独立的进程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在进程程中,由进程提供多个线程执行的控制。 进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源. 一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行。 4) 什么是线程的互斥和同步,程序应怎样写才能达到互斥或同步? 互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。 同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源。 在写程序时可以用互斥锁和信号量实现线程同步,一个线程访问共享资源时给这个资源上锁其他线程就不能访问了直到上锁的进程释放互斥锁为止。 5) 什么是僵尸进程?孤儿进程?守护进程? 僵尸进程:僵尸进程是指它的父进程已经退出(父进程没有等待(调用wait/waitpid)它),而该进程dead之后没有进程接受,就成为僵尸进程,也就是(zombie)进程。 孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成

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编程环境》期末考试样题 一.(共20分,每小题2分)给出完成下列各项功能所需要命令。陈述利用了该命令的哪个功能或选项。 1.如何得知命令netstat众多选项中哪个选项可以打印出IP路由表? 答:使用man命令,man命令可以在线查阅命令的使用手册,使用命令man netstat查出netstat命令的使用手册,看看哪个选项和什么命令格式用来打印出ip的路由表。 2.删除文件名为-f的文件。 答:使用rm命令,由于命令会默认以减号开始的命令行参数为命令处理的选项而不是处理对象,所以需要使用特殊的选项--以显式的方式说明选项的结束。命令为rm -- -i 3.在你完成上机作业过程中,使用什么命令将源程序文件mylist.c编译、 链接生成可执行文件?可执行文件是什么名字?如何运行? 答:使用gcc命令或者make,实现编译和链接 gcc mylist.c –o mylist 或者:make mylist 生成的可执行文件名按照惯例为mylist,一般情况下当前环境变量 PATH不包括当前目录,所以,运行这个可执行程序应当加上当前路径,命令为:./mylist 4.去掉文件list.txt中的所有空行(所谓空行指:行内不含有任何除空格之 外的字符),存为新文件list-new.txt。 答:使用grep命令可以用正则表达式对文本文件过滤,-v选项用于筛选掉能匹配指定正则表达式的行,描述一个空行的正则表达式为^ *$,即:从行首开始(^),有零个到多个空格( *),然后是行尾($),命令为: grep –v ’^ *$’ list.txt > list-new.txt 5.检索目录src以及其子孙目录中的所有文件名后缀为.c和.h文件,查找 哪些文件中含有字符串TPDU,并列出在这文件中的行号。 答:使用find命令和grep命令。find命令可以在指定的目录树中查找满足某个条件的文件或目录,并对查找到的满足条件的对象执行一个动作。指定查找条件为“文件名后缀为.c和.h”,动作为“查找哪些文件中含有字符串TPDU,并列出在这文件中的行号”,分别是find的 -name和-exec选项。完整的命令为: find src –name ”*.[ch]”–exec grep –n TPDU {} /dev/null \;

浙江大学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程序设计》实验指导书 实验类别:课内实验实验课程名称: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编程基础复习题

选择题 1. /etc目录的标准应用是用于____ A. 安装附加的应用程序 B. 存放可执行程序、系统管理工具和库 C. 设置用户的主目录 D. 存放用于系统管理的配置文件 ##D 2. Apache服务器默认的接听连接端口号是________。 A. 1024 B. 800 C. 80 D. 8 ##C 3. DNS域名系统主要负责主机名和________之间的解析。 A. IP地址 B. MAC地址 C. 网络地址 D. 主机别名 ##A 4. Linux 将存储设备和输入/输出设备均看做文件来操作,________不是以文件的形式出现。 A. 目录 B. 软链接 C. i节点表 D. 网络适配器 ##C 5. Linux 文件名的长度不得超过________个字符。 A. 64 B. 128 C. 256 D. 512 ##C 6. Linux 系统通过________命令给其他用户发消息。 A. less

B. mesg y C. write D. echo to ##C 7. Linux内核遵守的是下面哪一种许可条款________。 A. GDK B. GDP C. GPL D. GNU ##C 8. Linux包含了一个名称是________的调试程序,它是用来调试C或C++程序的强力调试器,它使用户能在程序运行时观察程序的内部结构和内存的使用情况。 A. gcc B. make C. gdb D. autoconf ##C 9. Linux命令行是由____提供的。 A. 管道 B. 分层结构文件系统 C. 文本处理器 D. shell ##D 10. Linux工作目录用________表示 A. . B. , C. * D. # ##A 11. Linux操作系统的创始人和主要设计者是________ A. Redhat Linux B. AT&T Bell实验室 C. 赫尔辛基大学 D. Linus Torvalds ##D 12. Linux文件权限一共10位长度,分成四段,第三段表示的内容是________。 A. 文件类型 B. 文件所有者的权限

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系统编程考试(答案)

linux系统编程考试(答案)

————————————————————————————————作者:————————————————————————————————日期:

凌阳教育 嵌入式培训系统编程部分测试试题 注:考试为闭卷,程序题需上机操作运行出结果,考试时间为120分钟 一:选择题(本题共4小题,每题3分共12分) 1)下列不是Linux系统进程类型的是( D ) A 交互进程 B 批处理进程 C 守护进程 D 就绪进程(进程状态) 2)以下对信号的理解不正确的是( B ) A 信号是一种异步通信方式 B 信号只用在用户空间进程通信,不能和内核空间交互 C 信号是可以被屏蔽的 D 信号是通过软中断实现的 3)进程有三种状态( C ) A 准备态、执行态和退出态 B 精确态、模糊态和随机态 C 运行态、就绪态和等待态 D 手工态、自动态和自由态 4)不是进程和程序的区别( B) A 程序是一组有序的静态指令,进程是一次程序的执行过程 B 程序只能在前台运行,而进程可以在前台或后台运行 C 程序可以长期保存,进程是暂时的 D 程序没有状态,而进程是有状态的 二:填空题(本题共6小题,2)、3)两题每空四分,其余每空一分。共23分) 1) 列举八种常见的进程间通信方式无名管道、有名管道、消息队列、信号量、共享内存、信号、套接字 网络上两个主机的进程间通信方式为套接字 2) 命名管道比无名管道的优势提供了一个可以访问的路径名,实现没亲缘关系的进程 间通信 3) 消息队列比命名管道和无名管道的优势可以按类型实现消息的随机查询,没必要先 进先出 4) 按照逻辑结构不同进行数据库划分,Sqlite 数据库属于哪一类关系型数据库 5) 在C语言中操作sqlite数据库,常用的2中方式是sqlite_exec(回调)、

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编程基础》复习题v2.doc

选择题 1./etc目录的标准应用是用于_ A.安装附加的应用程序 B.存放可执行程序、系统管理工具和库 C.设置用户的主目录 D.存放用于系统管理的配置文件##D 2.Apache服务器默认的接听连接端口号是________ 。 A.1024 B.800 C.80 D.8 ##C 3.DNS域名系统主要负责主机名和________ 之间的解析。 A.IP地址 B.MAC地址 C.网络地址 D.主机别名 林林A 4.Linux将存储设备和输入/输出设备均看做文件来操作,________ 不是以文件的形式出现。 A.□录 B.软链接 C.i节点表 D.M络适配器 ttttc 5.Linux文件名的长度不得超过________ 个字符。 A.64 B.128 C.256 D.512 ##C 6.Linux系统通过________ 命令给其他用户发消息。 A.less B.mesg y C.write D.echo to ttttc

7.Linux内核遵守的是下面哪一种许可条款________ 。 A.GDK B.GDP C.GPL D.GNU ttttc 8.Linux包含了一个名称是________ 的调试程序,它是用来调试C或C++程序的强力凋试器,它使用户能在程序运行吋观察程序的内部结构和内存的使用情况。 A.gcc B.make C.gdb D.autoconf ##C 9.Linux命令行是由____ 提供的。 A.管道 B.分层结构文件系统 C.文木处理器 D.shell ##D 10.Linux工作目录用________ 表示 A.? C.* D.# ##A 11.Linux操作系统的创始人和主要设计者是_________ A.Redhat Linux B.AT&T Bell 实验室 C.赫尔辛基大学 D.Linus Torvalds ttttD 12.Linux文件权限一共10位长度,分成四段,第三段表示的内容是_________ A.文件类型 B.文件所有者的权限 C.文件所冇者所在组的权限 D.其他用户的权限 ##C 13.Linux文件系统的文件都按其作用分门别类地放在相关的目录中,对于外部设备文件,一般应将其放在________ 目录中。 A./bin B./etc C./dev

【Linux编程基础】复习题集v2

《Linux编程基础》复习题集 选择题 1. /etc目录的标准应用是用于____ A. 安装附加的应用程序 B. 存放可执行程序、系统管理工具和库 C. 设置用户的主目录 D. 存放用于系统管理的配置文件 ##D 2. Apache服务器默认的接听连接端口号是________。 A. 1024 B. 800 C. 80 D. 8 ##C 3. DNS域名系统主要负责主机名和________之间的解析。 A. IP地址 B. MAC地址 C. 网络地址 D. 主机别名 ##A 4. Linux 将存储设备和输入/输出设备均看做文件来操作,________不是以文件的形式出现。 A. 目录 B. 软链接 C. i节点表 D. 网络适配器 ##C 5. Linux 文件名的长度不得超过________个字符。 A. 64 B. 128 C. 256 D. 512 ##C

6. Linux 系统通过________命令给其他用户发消息。 A. less B. mesg y C. write D. echo to ##C 7. Linux内核遵守的是下面哪一种许可条款________。 A. GDK B. GDP C. GPL D. GNU ##C 8. Linux包含了一个名称是________的调试程序,它是用来调试C或C++程序的强力调试器,它使用户能在程序运行时观察程序的内部结构和内存的使用情况。 A. gcc B. make C. gdb D. autoconf ##C 9. Linux命令行是由____提供的。 A. 管道 B. 分层结构文件系统 C. 文本处理器 D. shell ##D 10. Linux工作目录用________表示 A. . B. , C. * D. # ##A 11. Linux操作系统的创始人和主要设计者是________ A. Redhat Linux B. AT&T Bell实验室 C. 赫尔辛基大学 D. Linus Torvalds ##D

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编程环境》期末考试样题及参考答案

《UNIX编程环境》期末考试样题及参考答案 一. 给出完成下列各项功能所需要的UNIX系统命令。要求:给出实现这一功能的完整命令;不能给出完整命令可以仅给出所需要的命令名称。必须陈述利用了这个命令的哪个功能或选项。每题2分,共24分。 1.删除文件为-i的文件。 答:使用rm命令,由于命令会默认以减号开始的命令行参数为命令处理的选项而不是处理对象,所以需要使用特殊的选项--以 显式的方式说明选项的结束。命令为rm -- -i 2.命令netstat有很多选项,如何得知使用哪个选项可以打印出ip 的路由表? 答:使用man命令,man命令可以在线查阅命令的使用手册,使用命令man netstat查出netstat命令的使用手册,看看哪个选 项和什么命令格式用来打印出ip的路由表。 3.删除当前目录下的子目录tmp及该目录下属的所有文件和子孙目 录。 答:使用rm命令,rm命令有个选项可以递归地删除一个子目录,命令为 rm –r tmp 4.在你完成上机作业过程中,使用什么命令将源程序文件myrm.c 编译、链接生成可执行文件?可执行文件是什么名字?如何运行? 答:使用gcc命令或者make,实现编译和链接 gcc myrm.c –o myrm 或者:make myram 生成的可执行文件名按照惯例为myrm,一般情况下当前环境变量PATH不包括当前目录,所以,运行这个可执行程序应当加上 当前路径,命令为: ./myrm命令有个选项可以递归地删除一个子目录,命令为 ./myrm –r tmp 5.检索目录src以及其子孙目录中的所有文件名后缀为.c和.h文件, 查找哪些文件中含有字符串TPDU,并列出在这文件中的行号。 答:使用find命令和grep命令。find命令可以在指定的目录树 中查找满足某个条件的文件或目录,并对查找到的满足条件的对

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.doczj.com/doc/948909266.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: 在程序编译、链接过程中进行优化处理

相关主题
文本预览
相关文档 最新文档