linux系统编程试卷(答案)..

合集下载

linux试题及答案(全)

linux试题及答案(全)
怎么去提高与学习linux学习,不可否认练习是一个比较好,也比较有效果的一个方法,但有很多人在练习操作时,很多题都会带来困扰,下面我就把一些简单的操作实例分享给大家,大家一起来学习linux:
Linux课后习题,linux练习题,linux进步练习题,linux操作练习题
一、命令部分
1.新建一个用户yangang,密码设为123456,并将其加到root组。写出所用命令。
(2)0 8-18 * * * cut -f 1 >> /backup/bak01.txt
2. 某学校内部既存在WINDOWS操作系统,又存在LINUX操作系统,为了方便资源共享,建立一台SAMBA服务器,其地址为192.168.0.5,建立std、teacher两个用户,同时设置其密码。
创建用户:useradd std
service sshd restart
71.创建一个以自己的名的拼音命名的用户。
useradd chengwen
72.添加一个用户组,名称为js。
groupadd js
73.修改新建的用户属于js组。
usermod –g js newuser
74.进入该用户主目录,显示当前的路径。
cal 12 2011
57.建立文件/etc/group的符号链接文件/root/abc。
ln –s /etc/group /root/abc
58.后台启动程序gedit。
Gedit &
59.配置网卡eth0的IP地址为192.168.0.1,子网掩码为255.255.255.0
ifconfig eth0:192.168.0.1 netmask 255.255.255.0

linux试题及答案

linux试题及答案

linux试题及答案1. 简介Linux是一个开源的、基于UNIX的操作系统,广泛应用于计算机领域。

本文将介绍一些常见的Linux试题及其答案,帮助读者了解Linux操作系统的基本概念和应用。

2. Linux基础试题2.1 什么是Linux操作系统?Linux是一个开源的、基于UNIX的操作系统,具有高度的稳定性、安全性和可扩展性。

2.2 如何在Linux系统中创建新用户?使用`adduser`命令可以创建新用户,例如:```$ sudo adduser newuser```2.3 Linux文件系统中的根目录是什么?Linux文件系统的根目录位于`/`,所有其他目录和文件都位于根目录下。

*示例代码和命令的格式根据需要自行确定,不局限于上述示例。

*3. Linux命令试题3.1 如何在Linux终端中列出当前目录下的所有文件和文件夹?使用`ls`命令可以列出当前目录下的所有文件和文件夹,例如: ```$ ls```3.2 如何在Linux中复制文件?使用`cp`命令可以复制文件,例如:```$ cp file1.txt file2.txt```3.3 如何在Linux中查找文件?使用`find`命令可以在指定路径下查找文件,例如:```$ find /path/to/search -name "filename"```4. Linux网络与安全试题4.1 如何在Linux中查看网络连接状态?使用`netstat`命令可以查看网络连接状态,例如:```$ netstat -a```4.2 如何在Linux中配置防火墙规则?使用`iptables`命令可以配置防火墙规则,例如:```$ sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT```4.3 如何在Linux中查看系统日志?使用`tail`命令可以查看系统日志文件的末尾内容,例如: ```$ tail /var/log/syslog```5. Linux脚本编程试题5.1 如何在Shell脚本中获取用户输入?使用`read`命令可以获取用户输入的数值,例如:```#!/bin/bashecho "请输入您的姓名:"read nameecho "您的姓名是:$name"```5.2 如何在Shell脚本中进行条件判断?使用`if`语句可以进行条件判断,例如: ```#!/bin/bashecho "请输入一个数字:"read numif [ $num -gt 10 ]; thenecho "输入的数字大于10"elseecho "输入的数字小于等于10"fi```5.3 如何在Shell脚本中使用循环结构?使用`for`或`while`循环可以进行循环操作,例如: ```#!/bin/bashfor i in {1..5}; doecho "循环次数:$i"done```6. 总结本文介绍了一些常见的Linux试题及其答案,涵盖了Linux操作系统的基础知识、命令行操作、网络与安全、脚本编程等方面。

linux命令试题及答案

linux命令试题及答案

linux命令试题及答案1. 列出当前目录下的所有文件和文件夹。

答案:使用命令 `ls`。

2. 查看当前目录下的隐藏文件。

答案:使用命令 `ls -a`。

3. 切换到名为 "home" 的目录。

答案:使用命令 `cd home`。

4. 查找名为 "test.txt" 的文件。

答案:使用命令 `find . -name test.txt`。

5. 统计当前目录下的文件和文件夹数量。

答案:使用命令 `ls -l | grep -v '^d' | wc -l`。

6. 创建一个名为 "newfile.txt" 的空文件。

答案:使用命令 `touch newfile.txt`。

7. 将 "newfile.txt" 文件复制到 "/home" 目录下。

答案:使用命令 `cp newfile.txt /home/`。

8. 将 "/home/newfile.txt" 文件移动到当前目录。

答案:使用命令 `mv /home/newfile.txt .`。

9. 删除当前目录下的 "newfile.txt" 文件。

答案:使用命令 `rm newfile.txt`。

10. 查看 "newfile.txt" 文件的内容。

答案:使用命令 `cat newfile.txt`。

11. 查找并替换 "newfile.txt" 文件中的 "oldstring" 为"newstring"。

答案:使用命令 `sed -i 's/oldstring/newstring/g' newfile.txt`。

12. 显示当前目录的路径。

答案:使用命令 `pwd`。

13. 显示当前系统的运行时间和平均负载。

Linux考试试题100道(附答案)

Linux考试试题100道(附答案)

Linux考试试题100道(附答案)1、Linux系统中,用户文件描述符0 表示______。

A.标准输入设备文件描述符B.标准输出设备文件描述符B.管道文件描述符 D.标准错误输出设备文件描述符答案:A2、以长格式列目录时,若文件test的权限描述为:drwxrw-r–,则文件test的类型及文件主的权限是______。

A.目录文件、读写执行B.目录文件、读写C.普通文件、读写D.普通文件、读答案:A3、当字符串用单引号(’’)括起来时,SHELL将______。

A.解释引号内的特殊字符B.执行引号中的命令C.不解释引号内的特殊字符D.结束进程答案:C4、/etc/shadow文件中存放______。

A.用户账号基本信息B.用户口令的加密信息C.用户组信息D.文件系统信息答案:B5、若当前目录为/home,命令ls–l 将显示home 目录下的()。

A.所有文件B.所有隐含文件C.所有非隐含文件D.文件的具体信息答案:D6、为卸载一个软件包,应使用_____。

A.rpm -iB.rpm -eC.rpm -qD.rpm -V答案:B7、下面关于文件“/etc/sysconfig/network-scripts/ifcfg-eth0”的描述哪个是正确的?( )。

A.它是一个系统脚本文件B.它是可执行文件C.它存放本机的名字D.它指定本机eth0的IP地址答案:D8、如何快速切换到用户John的主目录下?( )A.cd @JohnB.cd #JohnC.cd &JohnD.cd ~John答案:D9、启动DNS服务的守护进程()A. httpd startB.httpd stopC. named startD. named stop答案:C10、Linux有三个查看文件的命令,若希望在查看文件内容过程中可以用光标上下移动来查看文件内容,应使用命令()A.cat B. more C. less D. menu答案:C11、在LINUX中,要查看文件内容,可使用()命令。

linux 试题及答案

linux 试题及答案

linux 试题及答案第一部分:选择题1. Linux 是一种()操作系统。

a) 开源b) 闭源c) 商业d) 私有答案:a) 开源2. 在 Linux 中,用于显示当前所在路径的命令是()。

a) pwdb) lsc) cdd) cp答案:a) pwd3. 在 Linux 中,用于创建目录的命令是()。

a) mkdirb) touchc) rmd) mv答案:a) mkdir4. Linux 中,用于列出当前目录下的文件和文件夹的命令是()。

a) lsb) cdc) pwdd) rm答案:a) ls5. 在 Linux 中,用于复制文件的命令是()。

a) cpb) mvc) touchd) mkdir答案:a) cp第二部分:填空题1. Linux 操作系统的核心部分被称为()。

答案:内核2. Linux 中,用于修改文件或目录的权限的命令是()。

答案:chmod3. 在 Linux 中,用于压缩文件的命令是()。

答案:tar4. Linux 是基于()开发的操作系统。

答案:UNIX5. Linux 中,默认的超级用户账户是()。

答案:root第三部分:简答题1. 什么是 Linux 操作系统?答:Linux 是一种开源操作系统,它基于 UNIX 操作系统开发而成。

Linux 以其稳定性、可定制性和安全性而闻名,并广泛运用于服务器和嵌入式设备等领域。

2. 如何在 Linux 中创建一个新用户?答:可以使用 `useradd` 命令来创建一个新用户,例如 `useradd -m newuser`。

其中,`-m` 参数表示同时创建用户的主目录。

3. 如何修改文件的访问权限?答:可以使用 `chmod` 命令来修改文件的访问权限。

例如,要将文件的所有者权限设置为可读可写可执行,可以使用 `chmod u+rwx filename` 命令。

4. 如何在 Linux 中安装软件包?答:可以使用包管理器,如 `apt` (用于 Debian 系统)或 `yum` (用于 Red Hat 系统),来安装软件包。

Linux操作系统试题及答案

Linux操作系统试题及答案

Linux操作系统试题及答案Linux操作系统试题及答案1.简介- 什么是Linux操作系统?- Linux操作系统的特点和优势。

2.Linux发行版介绍- 常见的Linux发行版有哪些?- 介绍一些常见的Linux发行版并比较它们的特点。

3.Linux安装和配置- Linux操作系统的安装步骤。

- Linux系统的基本配置指南。

- 如何安装和配置常见的Linux软件包。

4.用户和权限管理- Linux系统中的用户和组概念。

- 如何创建和管理用户和组。

- Linux权限管理的基本知识。

- 如何设置和修改文件和目录的权限。

5.常用Linux命令- 文件和目录管理命令(如ls、cd、cp、mv、rm等)。

- 文本处理命令(如cat、grep、sed、awk等)。

- 系统管理命令(如ps、top、df、shutdown等)。

- 网络管理命令(如ping、ifconfig、netstat、ssh等)。

6.进程和服务管理- Linux系统中的进程管理。

- 如何查看和控制系统中的进程。

- Linux系统的服务管理。

- 如何管理和配置系统服务。

7.文件系统管理- Linux文件系统的基本概念。

- 如何创建和管理文件系统。

- Linux文件系统的挂载和卸载。

- 如何使用磁盘配额限制用户的存储空间。

8.定时任务管理- Linux系统中的定时任务概念。

- 如何创建和管理定时任务。

- Linux定时任务的常见用法和注意事项。

9.网络和安全- Linux系统中的网络配置。

- 如何配置网络接口和网络相关设置。

- Linux系统的防火墙和安全设置。

- 如何设置和管理系统的防火墙和安全策略。

10.常见故障排除- Linux系统常见的故障类型。

- 如何诊断和解决常见的Linux故障问题。

- Linux系统的日志管理。

附件:无法律名词及注释:1.Linux操作系统:一种开放源代码的操作系统,具有高度的可定制性和安全性。

2.发行版:针对不同用户需求和使用场景定制的Linux操作系统版本。

计算机linux试题及答案

计算机linux试题及答案[简介]本文提供了一份计算机Linux试题及答案,帮助读者更好地了解和掌握Linux操作系统的知识。

通过阅读本文,读者将能够对Linux的基本概念、命令行操作、文件系统管理、网络配置等方面有更深入的了解。

[注意事项]在阅读试题及答案之前,请确保您对Linux操作系统有一定的了解,并具备一定的基本操作能力。

同时,本文提供的试题和答案仅供参考和学习使用,请勿用于商业用途或其他非法用途。

[试题一]1. 什么是Linux操作系统?2. Linux操作系统的主要特点是什么?3. Linux系统中,如何查看当前所在路径?4. 如何在Linux系统中创建一个名为"test"的文件夹?5. 如何复制一个名为"file.txt"的文件到名为"folder"的文件夹中?6. 在Linux系统中,如何查看一个文件的内容?7. 如何在Linux系统中查找名为"keyword"的文件?8. Linux系统中,如何切换到超级用户(root)身份?9. 如何在Linux系统中设置文件的权限为只读?10. Linux系统中,如何查看当前正在运行的进程列表?[答案一]1. Linux操作系统是一种开源免费的操作系统,基于UNIX的思想和设计原理。

2. 主要特点包括:开放源代码、多用户、多任务、强大的网络支持、良好的稳定性和安全性。

3. 可以使用命令"pwd"来查看当前路径。

4. 可以使用命令"mkdir test"来创建一个名为"test"的文件夹。

5. 可以使用命令"cp file.txt folder/"来复制文件到目标文件夹中。

6. 可以使用命令"cat filename"来查看一个文件的内容。

7. 可以使用命令"find / -name keyword"来在整个文件系统中查找名为"keyword"的文件。

linux考试试题和答案.doc

Linux考试试题及答案一、选择题1、在/etc/fstab文件中指定的文件系统加载参数中,那个参数一般用于CD-ROM等移动设备(D )A.defau ItsB.swC.rw 和roD.noauto2、Linux文件权限一共10位长度,分成四段,第三段表示的内容是(C)A.文件类型B.文件所有者的权限C.文件所有者所在组的权限D.其他用户的权限3、在使用mkdir命令创建新的目录时,在其父目录不存在时先创建父目录的选项是(D)A.-mB.-dC.-fD.-p4、一台主机要实现通过局域网与另一个局域网通信,需要做的工作是(C)A.配置域名服务器B.定义一条本机指向所在网络的路由C.定义一条本机指向所在网络网关的路由D.定义一条本机指向目标网络网关的路由5、下列提法中,不属于ifconfig命令作用范围的是(D)A.配置本地回环地址B.配置网卡的IP地址C.激活网络适配器D.加载网卡到内核中6、下列关于链接描述,错误的是(B)A.硬链接就是让链接文件的i节点号指向被链接文件的i节点B.硬链接和符号连接都是产生一个新的i节点C.链接分为硬链接和符号链接D.硬连接不能链接目录文件7、下列文件中,包含了主机DNS配置信息的文件是(C )A./etc/host. confB./etc/hostsC./etc/resolv. confD./etc/networks8、那个命令可以从文本文件的每一行中截取指定内容的数据(D)A.cpB.ddC.fmtD.cut9、L inux有三个查看文件的命令,若希望在查看文件内容过程中可以用光标上下移动来查看文件内容,应使用(C)命令。

A.catB.moreC.lessD.menu10、对名为fido的文件用chmod 551 fido进行了修改,则它的许可权是(D)A.-rwxr—xr—xB.-rwxr-一r一一C.-r——r——r——D.-r—xr—x—x11 >文件exerl的访问权限为rw~r--r--,现要增加所有用户的执行权限和同组用户的写权限,下列命令正确的是(A)A.chmod a+x g+w exerlB.chmod 765 exerlC.chmod o+x exerlD.chmod g+w exerl12、有关归档和压缩命令,下面描述正确的是(C)A.用uncompress命令解压缩由compress命令生成的后缀为.zip的压缩文件B.unzip命令和gzip命令可以解压缩相同类型的文件C.tar归档且压缩的文件可以由gzip命令解压缩D.tar命令归档后的文件也是一种压缩文件13、下列那一项不是进程和程序的区别(B)A.程序是一组有序的静态指令,进程是一次程序的执行过程B.程序只能在前台运行,而进程可以在前台或后台运行C.程序可以长期保存,进程是暂时的D.程序没有状态,而进程是有状态的14、下列关于/etc/fstab文件描述,正确的是(D)A.fstab文件只能描述属于linux的文件系统B.CD_ROM和软盘必须是自动加载的C.fstab文件中描述的文件系统不能被卸载D.启动时按fstab文件描述内容加载文件系统15、如果想配置一台匿名ftp服务器,应修改那个文件(C)A./etc/gatewayB./etc/ftpserversC./etc/ftpusersD./etc/inetd. conf16、关于进程调度命令,那一项是不正确的(B)A.当日晚11点执行clear命令,使用at命令:at 23: 00 today clearB.每年1月1日早上6点执行date命令,使用at命令:at 6am Jan 1 dateC.每日晚11点执行date命令,crontab文件中应为:0 23 * dateD.每小时执行一次clear命令,crontab文件中应为:0 */1 * clear17、可以完成主机名与IP地址的正向解析和反向解析任务的命令是(A)A.nslookupB.arpC.ifconfigD.dnslook18、将光盘/dev/hdc卸载的命令是(C)A.umount/dev/hdcB.unmount/dev/hdcC.umount/mnt/cdrom /dev/hdcD.unmount/mnt/cdrom /dev/hdc19、用ftp进行文件传输时,有两种模式(C)E.Word 和binaryF.txt 和Word DocumentG.ASCII 和binaryH.ASCII 和Rich Text Format20、crontab文件由六个域组成,每个域之间用空格分割,其排列如下⑻I.MIN HOUR DAY MONTH YEAR COMMANDJ.MIN HOUR DAY MONTH DAYOFWEEK COMMANDMAND HOUR DAY MONTH DAYOFWEEKMAND YEAR MONTH DAY HOUR MIN二、填空题1.在Linux系统中,以文件方式访问设备。

《LINUX系统及其编程》考试试题及答案

《Linux系统及其编程》模拟练习参考答案一、单项选择题1.Linux的根分区的文件系统类型是C。

A. FAT16B.FAT32C. ext3D. NTFS 2.安装好Linux操作系统后,系统默认的超级用户(系统管理员)账号是C。

A. administratorB.guestC.rootD. boot 3.Linux文件系统的文件都按其作用分门别类地放在相关的目录中,对于外部设备文件,一般应将其放在C目录中。

A. /binB. /etcC. /devD. /lib 4.Linux有三个查看文件的命令,若希望在查看文件内容过程中,可以用光标上下移动来查看文件内容,应使用C命令。

A. catB.moreC. lessD. menu 5.可以为文件或目录重命名的命令是C。

A. mkdirB. rmdirC. mvD. rm6.已知某用户stud1,其用户目录为/home/stud1。

如果当前目录为/home,进入目录/home/stud1/test的命令是:C。

A. cd testB. cd /stud1/testC. cd stud1/testD.cd home 7.Linux文件权限一共10位长度,分成四段,第三段表示的内容是C。

A.文件类型B.文件所有者的权限C.文件所有者所在组的权限D.其他用户的权限8.将Windows C:盘(hda1)安装在Linux文件系统的/winsys目录下,命令是B。

A. mount –t vfat dev/hda1 /winsysB. mount –t vfat /dev/hda1 /winsysC. mount –t vfat /dev/hda1 winsysD. mount –t vfat dev/hda1 winsys9.一般情况下,系统启动过程自动加载的文件系统信息是存放在文件D中A. /usr/sbin/cfdiskB. /sbin/fdiskC. /etc/mtabD. /etc/fstab 10.系统中有用户user1和user2,同属于users组。

Linux操作系统考试题库及答案

Linux操作系统考试题库及答案一、单项选择题1. Linux操作系统的创始人是()。

A. Bill GatesB. Linus TorvaldsC. Steve JobsD. Richard Stallman答案:B2. 在Linux系统中,查看当前路径的命令是()。

A. pwdB. lsC. cdD. mkdir答案:A3. 在Linux系统中,以下哪个命令用于查看文件内容?()A. catB. grepC. findD. touch答案:A4. 在Linux系统中,以下哪个命令用于创建目录?()A. touchB. mkdirC. rmdirD. rm答案:B5. 在Linux系统中,以下哪个命令用于删除文件?()A. mkdirB. rmdirC. rmD. touch答案:C6. 在Linux系统中,以下哪个命令用于查找文件?()A. grepB. findC. catD. ls答案:B7. 在Linux系统中,以下哪个命令用于查看当前登录用户?()A. whoB. userC. usersD. whoami答案:A8. 在Linux系统中,以下哪个命令用于查看系统运行时间和平均负载?()A. uptimeB. topC. psD. free答案:A9. 在Linux系统中,以下哪个命令用于查看磁盘空间使用情况?()A. dfB. duC. lsD. pwd答案:A10. 在Linux系统中,以下哪个命令用于查看网络配置?()A. ifconfigB. netstatC. routeD. all of the above答案:D二、多项选择题1. 在Linux系统中,以下哪些命令用于文本编辑?()A. viB. nanoC. emacsD. gedit答案:ABC2. 在Linux系统中,以下哪些命令用于文件权限管理?()A. chmodB. chownC. chgrpD. ls答案:ABC3. 在Linux系统中,以下哪些命令用于进程管理?()A. psB. topC. killD. free答案:ABC4. 在Linux系统中,以下哪些命令用于网络管理?()A. ifconfigB. netstatC. pingD. route答案:ABCD5. 在Linux系统中,以下哪些命令用于磁盘管理?()A. dfB. duC. fdiskD. mount答案:ABCD三、判断题1. Linux是一个开源的操作系统。

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

凌阳教育嵌入式培训系统编程部分测试试题注:考试为闭卷,程序题需上机操作运行出结果,考试时间为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)进程。

孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。

孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。

守护进程:是指在UNIX或其他多任务操作系统中在后台执行的电脑程序,并不会接受电脑用户的直接操控。

此类程序会被以进程的形式初始化。

守护进程程序的名称通常以字母“d”结尾:例如,syslogd就是指管理系统日志的守护进程。

通常,守护进程没有任何存在的父进程(即PPID=1),且在UNIX系统进程层级中直接位于init之下。

守护进程程序通常通过如下方法使自己成为守护进程:对一个子进程调用fork,然后使其父进程立即终止,使得这个子进程能在init下运行。

这种方法通常被称为“脱壳”6) 有3个线程:A、B、C,现要求A先执行,然后B再执行,最后C再执行,之后A->B->C循环执行,请说出大体的思路?创建3个信号量sem_A、sem_B、sem_C,分别用来给A、B、C 3个线程,启动sem_A信号量的初始值为1,其余2个信号量初始值为0,当主线程创建3个子线程后,因为sem_A 的值大于0,所以只有A线程执行相关的代码,B、C线程堵塞在对sem_B、sem_C信号量的p操作;当A线程执行完相应的代码后,给sem_B信号量加1,之后B线程开始执行相关操作,在此时A线程堵塞在对sem_A信号量的p操作,C线程继续堵塞;当B线程执行完毕相关操作后,给sem_C进行V操作,B线程堵塞,C线程执行相关操作;以上是从A->B->C线程执行的流程.7) exit()、_exit()和return()的区别?exit():结束当前的进程,并且会刷新缓存区,关闭没有关闭的文件等_exit():结束当前的进程,不对缓存区刷新return:1:在main函数中会结束当前进程2:在子函数中,会返回调用当前函数的调用位置,进程从下个C语句开始执行四:程序题(本小题共3题,每题10分共30分)1)用多线程、信号量实现生产者和消费者的模拟,仓库容量为10,仓库中开始有3件产品,消费者每3秒消费一件产品,生产者每两秒生产一个产品,生产者和消费者不能同时进入仓库(需要互斥)//信号量---线程间通信//“生产者消费者”问题#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<semaphore.h>#include<pthread.h>#define msleep(x)usleep(x*1000)#define PRODUCT_SPEED 3 //生产速度#define CONSUM_SPEED 1 //消费速度#define INIT_NUM 3 //仓库原有产品数#define TOTAL_NUM 10 //仓库容量sem_t p_sem, c_sem, sh_sem;int num=INIT_NUM;void product(void) //生产产品{sleep(PRODUCT_SPEED);}int add_to_lib() //添加产品到仓库{num++;//仓库中的产品增加一个msleep(500);return num;}void consum() //消费{sleep(CONSUM_SPEED);}int sub_from_lib() //从仓库中取出产品{num--; //仓库中的产品数量减一msleep(500);return num;}void *productor(void *arg) //生产者线程{while(1){sem_wait(&p_sem);//生产信号量减一product();// 生产延时sem_wait(&sh_sem);//这个信号量是用来互斥的printf("push into! tatol_num=%d\n",add_to_lib());sem_post(&sh_sem);sem_post(&c_sem); //消费信号量加一}}void *consumer(void *arg) //消费者线程{while(1){sem_wait(&c_sem); //消费者信号量减一sem_wait(&sh_sem);printf("pop out! tatol_num=%d\n",sub_from_lib());sem_post(&sh_sem);sem_post(&p_sem);//生产者信号量加一consum();//消费延时}}int main(){pthread_t tid1,tid2;sem_init(&p_sem,0,TOTAL_NUM-INIT_NUM);sem_init(&c_sem,0,INIT_NUM);sem_init(&sh_sem,0,1);pthread_create(&tid1,NULL,productor,NULL);pthread_create(&tid2,NULL,consumer,NULL);pthread_join(tid1,NULL);pthread_join(tid2,NULL);return 0;}2)编写一个多线程的程序:要求:1、创建2个子线程,主进程要传递3个参数给线程1,传递另一个参数给线程2;2、线程1、线程2中对每个传给线程的参数加1,等线程都执行完毕后,进程打印出四个参数的值。

3、传给线程1参数的值必需要能够改变,传给线程2参数的值必需不能改变#include <stdio.h>#include <unistd.h>#include <pthread.h>typedef struct{int A;int B;int C;}DATA;/*传参方法1*/void *thread_1(void *arg){DATA *rec;sleep(1);rec = (DATA *)arg;rec->A += 1;rec->B += 1;rec->C += 1;return NULL;}/*传参方法2*/void *thread_2(void * arg){int rec = 0;sleep(1);rec = (int )(arg);rec ++;return NULL;}int main(int argc, char *argv[]){pthread_t tid1,tid2;DATA test;int D = 100;test.A = 100;test.B = 100;test.C = 100;/*创建两个线程*/pthread_create(&tid1, NULL, (void *)thread_1, (void *)(&test));pthread_create(&tid2, NULL, (void *)thread_2, (void *)D);pthread_join(tid1, NULL);pthread_join(tid2, NULL);printf("A=%d\n", test.A);printf("B=%d\n", test.B);printf("C=%d\n", test.C);printf("D=%d\n", D);return 0;}3) 编制一段程序,实现进程的管道通信:使用系统调用pipe()建立一条管道线,2个子进程分别向管道各写一句话:Child process 1 is sending a message!Child process 2 is sending a message!而父进程则从管道中读出来自于2个子进程的信息,显示在屏幕上。

相关文档
最新文档