




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实 验 报 告课程名称: LINUX程序设计 学 院: 信息科学与工程学院 专 业: 计算机12 班 级: 2班 姓 名: 张希泽 学 号: 201201050245 2015年 5 月 11日山 东 科 技 大 学 教 务 处 制实 验 报 告组别姓名张希泽同组实验者实验项目名称熟悉Linux命令实验日期第5周周三教师评语实验成绩指导教师廉文娟一、 背景知识使用Linux系统时,用户一般是通过一个shell与系统进行对话的。Shell是一个接收用户输入命令并将其转换成指令的程序,它是用户与Linux内核的接口。当用户登录到Linux系统后,即开始了与shell的对话交互过程,此时只要用户键入
2、了一个命令,都会被shell解释和执行。 二、试验目的 1、登录Linux和熟悉GNOME 2、使用Linux shell 3、熟悉Linux下的基本操作,学会使用各种Shell命令去操作Linux,对Linux有一个感性认识三、工具与准备工作在开始本实验之前,请回顾教材中的相关内容。需要准备如下:1) 由指导老师分配的Linux登录用户ID和口令2) 一台运行Red Hat Linux 操作系统并带有GNOME的计算机。四、实验内容在Linux系统中打开终端的方式有以下两种:一种是在桌面上依次单击“主程序系统工具终端”可打开如图的终端窗口;另一种是在Linux桌面上单击鼠标右键,从弹出的快捷
3、菜单中选择“终端”命令,也可打开终端窗口。注销与关机 注销:在使用系统过程中需要临时离开,或不再使用系统时,应该养成注销系统的好习惯,这样可以大大降低帐号被盗用的可能性,保证系统的完整性,注销方法是Linux提示符下运行:exit或logout。注销后,系统将重新提示登录系统的界面,等待用户输入帐号和口令。关机与重启 Linux中提供了命令shutdown,可以安全地关机或重启系统,该命令只能是超级用户可以使用,命令格式:shutdown 选项时间警告信息其中警告信息是向其他用户发布的信息,时间指定关机或是重启的时间,选项的意义如下:-h 关机,关机前关闭相关进程,执行fsck命令(文件系统的
4、一致性检查)-r 系统重新启动-f 快速关机,系统关机前不执行fsck命令-n 快速关机, 系统关机前不执行init命令-k 不关机,只是将警告信息向其他用户发布-c 终止执行正在运行的shutdown命令举例:1、 系统立即关机 shutdown h now2、 两分钟后重启系统,发布信息System will be down in 2 minutes!给其他终端用户。Shutdown r +2 “System will be down in 2 minutes!”除了可以使用shutdown命令来关机和重启系统外,Linux还有专门用于关机和重启系统的命令poweroff和reboot,
5、reboot用于重启系统(相当于shutdown r now),命令poweroff则用于关机(相当于shutdown h now)添加新用户、修改文件属性1 添加新用户(在root下,按默认值回答)adduser 用户名;如adduser s2001 ; 以新用户登录到系统2修改用户口令 passwd 用户名3控制文件属性使用ls l 查看文件属性改变用户的所有权:chown 用户名 文件名改变文件权限:chmod g+w 文件名;chmod o-r 文件名或使用数字方式修改:如chmod 644文件名;chmod 755文件名u (user用户),g ( group组),o (other其
6、他); w 写访问权限,r 读访问权限, x 执行权限4查看相关命令的帮助:man 命令名5显示当前系统中已注册的用户信息:who6显示当前注册的用户信息:whoami 文件显示命令显示指定工作目录中所包含的内容的指令是ls,要说明的是ls命令列出文件的名字,而不是文件的内容。该命令的使用方式如下: ls 选项 文件目录列表 ls命令中的常用选项如下: -a:显示所有文件及目录 (ls规定将文件名或目录名中开头为 "."的视为隐藏档,不会列出) -c:按列输出,纵向排序 -x:按行输出,横向排序 -l:除文件名外,也将文
7、件状态、权限、拥有者、文件大小等信息详细列出 -t:根据文件建立时间的先后次序列出 -A:同-a,但不列出"." (目前目录)及"." (父目录) -X:按扩展名排序显示 -R:递归显示下层子目录 -help:显示帮助信息 -version:显示版本信息查找文件#find 目录列表 匹配标准1)通过文件名查找# find / -name httpd.conf print2)根据部分文件名查找#find / name *http* -print显示文本文件内容cat 选项文件列表-b 计算所
8、有非空输出行,开始为1。 -e 在每行末尾显示$符号。 -n 计算所有输出行,开始为1。 -s 将相连的多个空行用单一空行代替。 查找文件内容grep 选项 匹配字符串 文件列表-v 列出不匹配串或正则表达式的行。 -c 对匹配的行计数。 -l 只显示包含匹配的文件的文件名。 -h 抑制包含匹配文件的文件名的显示-n 每个匹配行只按照相对的行号显示。 -i 产生不区分大小写的匹配,缺省状态是区分大小写。 文件复制命令 Linux下的cp命令用于复制文件或目录,该命令是最重要的文件操作命令,其命令格式如下:cp选项 源文件目标文件 cp选项 源文件组 目标目录-a在备份中保持尽可能多的源文件结构
9、和属。-b作将要覆盖或删除文件的备份。-f删除已存在的目标文件。-i提示是否覆盖已存在的目标文件。-p保持原先文件的所有者,组权限和时间标志-r递归拷贝目录,把所有非目录文件当普通文件拷贝。-R递归拷贝目录。文件的删除命令rm命令可从文件系统中删除文件及整个目录。rm命令所使用的命令格式如下:rm 选项 文件列表-r删除文件列表中指定的目录,若不用此标志则不删除目录-i指定交互模式。在执行删除前提示确认。任何以Y开始的响应都表示肯定;其他则表示否定。-f指定强行删除模式。通常,在删除文件权限可满足时rm提示。本标志强迫删除,不用提示。移动文件在Linux系统中,移动文件可使用mv命令。mv命令
10、还可改文件改名,即把源文件以一个新文件名移动到另一个新的目录中去。该命令所使用语法形式有:mv -f -i 文件1 文件2mv -f -i 目录1 目录2mv -f -i 文件列表 目录创建目录在Linux系统中建立新目录的命令是mkdir。该命令的语法格式如下: mkdir -p目录名 目录-p目录名:建立所有不存在父目录的目录。删除目录rmdir命令是用来删除目录的,一般情况下要删除的目录必须为空目录,如果所给的目录不为空,系统会报告错误。该命令的语法格式如下:rmdir -p 目录列表-p:在删除目录表指定的目录后,若父目录为空,则rmdir也删除父目录。状态信息显示什么被删除,什么没被
11、删除。目录列表:空格分隔的目录名列表。要删除的目录必须为空。rm命令可以删除文件或目录。格式:rm 参数选项 文件或目录的名字-i 删除前询问确认-f 强制删除而无确认,即使原文件属性舍维只读-r 递归将目录及以下文件逐层删除显示当前目录pwd链接文件的命令链接文件命令是ln命令。该命令在文件之间创建链接。这种操作实际上是给系统中已有的某个文件指定另外一个可用于访问它的名称。 该命令的使用语法如下:硬链接:ln 选项 目标 链接名ln 选项 目标 目录软连接:ln 选项 s目标 链接名ln 选项 s 目标 目录链接类似于Windows系统的对文件建立快捷方式,硬链接和软连接的区别在于硬链接不会
12、创建一个新的链接文件,只是创建了一个指向文件的指针,而软连接市创建了一个新的链接文件,记录访问源文件的路径等信息。硬链接不可以在不同的文件系统中建立连接,而软连接则可以,应用较广泛。改变文件或目录chmod选项文件和目录列表-R 递归改变目录及其内容的权限。 chmod命令支持两种文件权限设定的方法:(1)使用字符串设置权限(2)使用八进制数设置权限另外,文件和目录的权限还可用八进制数字模式来表示。三个八进制数字分别代表ugo的权限。执行权、读权和写权所对应的数值分别是1,2和4。若要rwx属性则4+2+1=7; 若要rw-属性则4+2=6; 若要r-x属性则4+1=5。Tip:与文件链接的数
13、Linux文件目录的属性显示格式:如:-rw-rw-rw- 1 steve users 138 Apr 5 19:34 readme文件的访问权限文件的拥有者用户所在的组文件或目录名drwxrwxrwx 3 steve users 80 Apr 5 19:43 dir1 最后修改的日期和时间三种权限: owner group others文件压缩gzip压缩文件gzip 选项 压缩(解压缩)的文件名gzip命令是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。gzip命令的使用语法格式如下:gzip 选项 压缩(解压缩)的文件名-c 将输出写到标准输出上,并保留原有
14、文件。 -d 将压缩文件解压。 -l 对每个压缩文件,显示压缩文件的大小、未压缩文件的大小、压缩比、未压缩文件的名字等详细信息。 -r 递归式地查找指定目录并压缩其中的所有文件或者是解压缩。 -t 测试,检查压缩文件是否完整。 -v 对每一个压缩和解压的文件,显示文件名和压缩比。文件打包tartar 主选项+辅选项 文件或者目录 -c 创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。 -x 从档案文件中释放文件。 -r把要存档的文件追加到档案文件的未尾。例如用户已经作好备份文件,又发现还有一个目录或是一些文件忘记备份了,这时可以使用该选项,将忘记的目录或文件追加到备份文
15、件中。 -t 列出档案文件的内容,查看已经备份了哪些文件。 -u 更新文件。就是说,用新增的文件取代原备份文件,如果在备份文件中找不到要更新的文件,则把它追加到备份文件的最后。 重定向与管道Linux系统定义了三个标准文件,即标准输入(stdin)、标准输出(stdout)和标准错误输入(stderr)。默认时,标准输出指屏幕(显示器),标准输入指键盘。Linux重定向可以将文件的标准输出重新定向输出到文件,或是将数据文件作为另一个程序的标准输入内容,如:ls l 是将当前目录下的文件与子目录进行详细列表,其结果是输出到标准输出显示器。可以利用重定向将结果输出到文件,如:ls l >fi
16、le.txt 或ls l >>file.txt,其中,>和>>为重定向输出符,>将输出内容重定向存到文件file.txt中,若文件存在,则先删除原文件内容;>>将输出内容重定向到文件file.txt文件的末尾。同理,可以利用输入重定向<和<<将文件内容作为另一程序的输入,如:grep keyword < file.txt管道管道符| 通常放在两个命令之间,将前一个(|左边的)命令的输出作为下一个(|右边的)命令的输入。如:ls a | grep /bin每个命令运行时,其标准输入、标准输出和标准错误输入分别由三个文件描述,
17、即stdin(0),stdout(1)和stderr(2)。它们均指向屏幕设备。可以使用重定向输入符<改变输入源,用>改变输出源,用>>来追加到已有的文件中。五 实验步骤 1、以root用户身份登陆,并使用ls,cat,cd等命令来实现基本的文件操作并观察Linux文件系统的特点,并记录实验结果;2、在/home下新建一个以自己名字命名的子目录,在这个子目录中创建一个文件mytest,为这个文件建立一个软链接文件mylink,用ls l查看该子目录有什么变化,并记录下来。3、在2的基础上,为mytest文件更改访问权限,分别用字符串方法和数值方法,将mytest文件的写
18、访问权限都加上,记录过程和结果。4、使用重定向。查看/home下的文件及子目录,并将结果输出到mytest文件中,并查看mytest文件的内容,记录下来。5、利用gzip命令为/home下面的mytest文件创建一个压缩文件,然后查看/home下面的文件,有什么变化,记录下来。6、利用tar命令将/home下面所有文件打包为一个文件,命名为mytar,并做记录。 7、利用命令删除/home下你自己新建的所有的文件或目录,记录下来.实 验 报 告组别姓名张希泽同组实验者实验项目名称shell程序设计实验日期第6周周三教师评语实验成绩指导教师廉文娟【实验目的】1、了解和熟悉创建并使用脚本的步骤。2
19、、熟悉bash的控制结构。3、学会简单的shell编程。【实验内容】1、创建一个简单的列目录和日期的shell 脚本并运行之。步骤:输入下列命令,创建一个新文件:cat >new_script输入下列行:echo “Your files are”lsecho “today is”date按回车键将光标移到一个新行,按Ctrl+D键保存并退出。检查文件内容,确保它是正确的:cat new_script运行脚本,输入它的文件名:new_script该脚本不运行。输入下列命令,显示文件的权限:ls l new _script权限表明该文件不是可执行。要通过简单调用文件名来运行脚本,必须有权限。
20、输入下列命令,使new_script变成可执行文件。chmod +x new_script要查看新的权限,输入:ls l现在拥有文件的读、写和执行权限。输入新脚本的名字以执行它:new_script所有输入到文件的命令都执行,并输出到屏幕上。如果接收到错误信息,比如:command not found输入下列命令:./new_script该命令行通知shell到哪里寻找shell脚本new_script,即您的当前目录“.”。程序运行过程如下:2、用Shell 语言编制一Shell 程序,该程序在用户输入年、月之后,自动打印数出该年该月的日历。程序运行过程如下:3、编程提示用户输入两个单词,并
21、将其读入,然后比较这两个单词,如果两个单词相同则显示“Match”,并显示“End of program”,如果不同则显示“End of program”。程序运行过程如下:、修改上述程序,编程提示用户输入两个单词,并将其读入,然后比较这两个单词,如果两个单词相同显示“Match”,不同则显示“Not match”,最后显示“End of program”。<编程提示>请使用ifthenelse 控制结构。程序运行过程如下:、编程使用case 结构创建一个简单的菜单,屏幕显示菜单:a. Current date and timeb. User currently logged in
22、c. Name of the working directoryd. Contents of the working directoryEnter a,b,c or d:根据用户输入选项做相应操作。shell编程代码如下:程序运行结果如下:6、修改上题,使用户可以连续选择直到想退出时才退出。shell编程代码如下:程序运行结果如下:7、编程使用select 结构生成一个菜单如下:1)apple 3)blueberry 5)orange 7)STOP2) banana 4)kiwi 6)watermelonChoose your favorite fruit from these possibi
23、lities:用户输入所选项,如 1 显示:You chose apple as you favorite.That is choice number 1.shell编程代码及运行结果如下:8、上机编写如下代码,分析下面的程序,简要说明整体功能,并解释每条语句。#!/bin/shval=1while (test $val -lt 6)do touch file$valdate>>file$valval=expr $val + 1done9、编写一段shell程序,根据执行时候获取的当前时间显示出不同的问候信息。10、用Shell 编程,判断一文件是不是字符设备文件,如果是将其拷贝到
24、/dev 目录下11、在根目录下有四个文件m1.txt,m2.txt,m3.txt,m4.txt,用Shell 编程,实现自动创建m1,m2,m3,m4 四个目录,并将m1.txt,m2.txt,m3.txt,m4.txt四个文件分别拷贝到各自相应的目录下【实验小结】通过几周的实习,我基本上掌握了shell的编程,了解和熟悉创建并使用脚本的步骤;熟悉bash的控制结构;学会简单的shell编程;能够通过编程实现一些功能,学会了Shell的一些控制语句,测试,Shell变量,Shell的特殊字符等。当然了,在实习的过程中肯定会遇到很多的困难,但是根据老师的给出的pdf文件,根据上面的说明一步一步
25、的做,问题不大,遇到了实在解决不了的问题,我会去请教老师和同学,把问题解决掉。初步学会了Linux下Shell的编程,为以后更加系统的学习Linux打下了坚实的基础!实 验 报 告组别姓名张希泽同组实验者实验项目名称文件系统程序设计实验日期第7周周三教师评语实验成绩指导教师廉文娟一、实验项目: 用户与组群管理 二、实验日期: 三、实验原理:1.熟悉Linux下常用的操作指令。 2.加深对文件,目录,文件系统等概念的理解。 3.掌握Linux文件系统的目录结构。 4.掌握有关Linux文件系统操作的常用命令。 5.了解有关文件安全方面的知识。四、实验仪器:PC机Redhat网络操作系统五、实验步
26、骤(纸张不够写可另外加纸并应装订):进入虚拟机,并在此平台上练习文件管理有关命令.一般在root localhost xxxx$提示符下键入有关命令。 1.浏览文件系统 1运行pwd命令,确定你当前的工作目录。 2利用以下命令显示当前工作目录的内容:(理解各字段彻底意义。) 3运行以下命令:(反馈信息中.代表本身目录,.代表其父目录;选项a可以显示隐藏文件;选项i可以显示文件的I节点号) ls ai 4使用mkdir命令建立一个子目录subdir,并用ls查看当前目录。 5使用带-d选项的ls命令,你只能看到有关子目录的信息(.表示本身目录)。 6使用cd命令,将工作目录改到根目录(/)上。
27、用相对路径将工作目录改到根目录。 用绝对路径将工作目录改到根目录。 7使用ls命令列出根目录的内容,再分别列出各子目录的内容,体会各目录作用及访问权限。 8使用ls-l命令列出/dev的内容。 Ls l /dev 列出/dev目录的内容,文件太多显示多屏,各行第一个字符为b的表示块特别文件;各行第一个字符为c的表示字符特别文件。 9使用不带参数的命令cd,然后用pwd命令确定你当前的工作目录是什麽。 10使用命令cd ./.,你将工作目录移到什麽地方? 2.查看你的文件 1 利用cd命令,将工作目录改到你的主目录上。 2 将工作目录改到你的子目录subdir,然后运行命令: date >
28、 file1 将当前日期和时间存放到新建文件file1中。 Ls l 反馈信息中有新文件 file1。请注意并记下文件长度为: 3 使用cat命令查看file1文件的内容。 4利用man命令显示date命令的用法(说明文件): 5将date命令的用法(说明文件内容)附加到文件file1的后面: 注意file1文件长度为 ,较前变长。 6利用ls -l file1命令列出文件file1的较详细的信息。 ls -l file1 注意第二字段(链接记数)的值为“1”。 7利用ln file1./fa命令进行文件链接。然后运行ls -l file1,查看显示的第二段的值发生了什麽变化。 8现在想利用c
29、at fa命令显示文件fa的内容,应该如何改动工作目录? 9利用cp file1 fa命令生成文件file1的副本。然后利用ls -l命令查看工作目录的内容。 10将文件fa删除。再利用ls -l命令查看工作目录内容。 11运行mv file1 file_a命令,然后用ls命令查看这两个文件是否都还在工作目录中? 3.文件存取权限 1存取权限 LINUX系统对所有文件设置了存取权限。存取权限让你确定谁可以对你的个人文件和目录行访问,以及可以进行什麽操作。 把所有用户分为三类: 文件主(user),即文件的属主。 组用户(group),即文件组的成员。 其他用户(other),即能对系统进行访问
30、的所有其他用户。 对一个文件的存取权限分为三种: 读(r) 写(w) 执行(x) 一组存取权限以及相应的文件类型统称为文件模式。如:rw-r-r-表示文件主有读和写的权限,组用户和其他用户只有读权限。 2文件存取权限 读权限(r)允许指定的用户可以打开文件并阅读其内容。如cat,more,file和cp命令等。 写权限(w)允许指定的用户可以打开文件并修改其内容。如vi,mail,cp等。 执行权限(x)允许指定的用户运行(即执行)一个二进制文件文件或者把一个shell脚文件当做命令来运行。当你通过输入命令名来调用命令时,你必须具有该命令文件的执行限。 3目录存取权限 读权限(r)允许你列出相
31、应目录中所存放的文件的名字(即目录的内容表)。 写权限(w)允许你从目录中删除已有文件或者把新文件添加到目录中。 查询权限(x)允许你在目录中进行查找和使用cd命令把工作目录放到它这里。 4修改文件权限 文件主或root用户可以使用chmod命令来修改文件或目录的权限。修改文件权限的方式有两种:符号模式和绝对模式。这里主要介绍符号模式。使用chmod命令修改当前权限设置的一般形式是:chmod key file file. 其中,key由以下成分组成:who +|-|= mode who这一部分可以由下面的一个和多个字符组成:u,g,o或a,它们分别表示文件主,组用户,其他用户或所有三种用户。
32、默认值是a。 第二部分必须是以下三个字符中的一个:+,-,或者=,分别表示增加,删除或者设定。 mode成分可以由以下字符任意组合:r,w或x,分别表示读,写或者执行/查询的权限。 以上三个部分必须依次输入,而且它们之间没有空格。在一个命令行中可以指定多个key,彼此间用逗号隔开,中间没有空格。 如:设文件f原来的权限是rw-rw-r-,现在想让所有用户都具有执行权限,则可使用以下命令:chmod a+x f ,该命令执行后,文件f的权限变成rwxrwxr-x。练习:mv file_a file1 恢复文件file1; ls l 显示文件file1的权限为 rw-rw-r; 1)取消同组用户g
33、和其他用户o 对文件可读的权利; 2)显示文件file1的权限。 3)恢复同组用户g和其他用户o 对文件可读的权利; 4 配额管理1利用fdisk创建一个分区2格式化为ext 3文件系统3将该分区设置为自动挂载为/home.4创建两个用户hellen和jerry,组群为student4对/home文件系统实施用户级和组群级的配额管理,普通用户helen和jerry的软配额为150MB,硬配额为200MB,student组群的软配额为800MB,硬配额为900MB0这个不懂怎么进行分配,很多命令不是很熟悉.六、实验总结 通过这次文件系统程序设计的实验,使我懂得了如何设计一个简单的文件系统,以及一
34、些相关的小操作,总的来说,这些地方还是挺难的,不过我会努力的学习。实 验 报 告组别姓名张希泽同组实验者实验项目名称进程编程实验日期第8周周三教师评语实验成绩指导教师廉文娟写给linux编程的初学者,进程编程是linux编程首先要学习的东西,往后要学习进程之间通讯的一些编程。下面的是进程编程的一些基本函数。1 用户标识(UID)和有效用户标识(EUID)使用getuid函数和geteuid函数来获取当前进程的用户标识和有效用户标识#include <stdio.h>#include <sys/types.h>#include <unistd.h>int ma
35、in(void) printf("Current process UID : %ldn",(long)getuid(); printf("Current porcess EUID : %ldn",(long)geteuid(); return 0; 运行结果:Current process UID:500Current process EUID:500 2. fork函数通过fork函数并判断函数返回值,根据返回值来判断是在父进程还是子进程。#include <stdio.h>#include <unistd.h>#include
36、 <sys/types.h>int main(void) pid_t pid;/fork函数如果返回值小于0,表示调用失败/如果返回值为0,表示处于进程中,如果大于0,表示在父进程中 if(pid=fork()<0) perror("Cannot create the new process"); return 1; else if(pid=0) printf("In the child process!n"); return 0; else printf("In the parent process!n"); re
37、turn 0; 运行结果:In the child processs!In the parent process!调用fork函数后,其后代码会被父子进程分别执行。#include <stdio.h>#include <unistd.h>#include <sys/types.h>int main(void) fork(); printf("Will be executed twicen"); return 0; 运行结果:Will be excuted twiceWill be excuted twice 3. vfork函数首先定义g
38、_var为全局变量, var为局部变量,然后调用fork函数创建子进程,并在子进程对g_var变量和var变量进行修改。子进程在输出这两个变脸值后退出,输出父进程中的这两个变量的取值情况。#include <stdio.h>#include <unistd.h>#include <sys/types.h>int g_var=0;int main(void) pid_t pid; int var=1; printf("process id:%ldn",(long)getpid(); printf("before execute t
39、he fork system call, g_var=%d var=%dn",g_var,var); if(pid=fork()<0) perror("Cannot create a new process"); return 1; else if(pid=0) g_var+; var+; printf("process id : %ld, g_var=%d var=%dn",(long)getpid(),g_var,var); _exit(0); printf("process id : %ld, g_var=%d var=%
40、dn",(long)getpid(),g_var,var); return 0; 运行结果:Process id :24437Before excute the fork system call,g_var=0 var=1Process id :24438, g_var=1 var=2Process id :24437, g_var=0 var=1修改上面的程序,将fork函数的语句进行替换,使用vfork函数,将代码保存并运行#include <stdio.h>#include <unistd.h>#include <sys/types.h>in
41、t g_var=0;int main(void) pid_t pid; int var=1; printf("process id:%ldn",(long)getpid(); printf("before execute the fork system call, g_var=%d var=%dn",g_var,var); if(pid=vfork()<0) perror("Cannot create a new process"); return 1; else if(pid=0) g_var+; var+; printf(&
42、quot;process id : %ld, g_var=%d var=%dn",(long)getpid(),g_var,var); _exit(0); printf("process id : %ld, g_var=%d var=%dn",(long)getpid(),g_var,var); return 0; 运行结果:Process id :24574Before excute the fork system call,g_var=0 var=1Process id :24575, g_var=1 var=2Process id :24574, g_var
43、=1 var=2 4 exec 函数族execvp函数支持参数列表,使用参数列表将使程序获得更大的灵活性,程序通过读取agrv中的参数,实现对输入的shell命令的执行。#include <stdio.h>#include <unistd.h>int main(int argc,char* argv) if(argc<2) printf("Usage: %s pathn",argv0); return 1; execlp("/bin/ls","ls",argv1,(char*)NULL); return
44、0; 5 exit函数使用atexit注册了一个在进程退出时的处理函数,该处理函数只是显示一段文字信息。Main函数退出时将调用exit函数,这样进程就会在退出时自动调用atexit注册的处理函数。#include <stdio.h>#include <stdlib.h>#include <unistd.h>void do_at_exit(void) printf("You can see the output when the program terminatesn");int main() int flag; flag=atexit(
45、do_at_exit); if (flag != 0) printf("Cannot set exit functionn"); return EXIT_FAILURE; exit(EXIT_SUCCESS); 6 _exit函数下面的程序和上面的除了退出函数不同,其他都一样。不同的是使用_exit函数退出时,不会执行atexit中注册的处理函数 #include <stdio.h>#include <stdlib.h>#include <unistd.h>void do_at_exit(void) printf("You ca
46、n see the output when the program terminatesn");int main() int flag; flag=atexit(do_at_exit); if (flag != 0) printf("Cannot set exit functionn"); return EXIT_FAILURE; _exit(EXIT_SUCCESS); 7 kill 函数发送信号直接用kill函数给进程发送结束信号或是让程序自动退出。#include <stdio.h>#include <stdlib.h>#includ
47、e <unistd.h>#include <sys/types.h>int main(int argc,char* argv) pid_t pid; int exit_code; pid=getpid(); srand(unsigned)pid); exit_code=(int)(rand() % 256); sleep(10); if(atoi(*(argv+1) % 2) printf("the child process id:%d receive signal SIGKILLn",pid); kill(pid,9); else printf(
48、"the child process id:%d normally exit,exit_code is %0xn",pid,exit_code); exit(exit_code); 下面程序通过fork函数创建子进程,并调用execl函数执行上面的程序。为了方便了解程序运行情况,在父进程中显示了创建的子进程的进程号。在while循环中调用wait函数,跳出条件是wait函数放回值小于0,或wait_pid为-1。这种情况下,所有的子进程都已经完全退出。#include <stdio.h>#include <unistd.h>#include <
49、sys/types.h>#include <sys/wait.h>int main(int argc,char* argv) pid_t pid,wait_pid; int status; int i; if(argc<4) printf("Usage: %s para1 para2 para3n",argv0); return 1; for(i=1;i<4;i+) if(pid=fork()=0) execl("./p7.14","p7.14",argvi,NULL); else printf(&quo
50、t;create the child process id: %dn",pid); while(wait_pid=wait(&status) && wait_pid!=-1) printf("process id:%d exit,exit_code is %0xn",wait_pid,status); return 0; 8 waitpid函数使用waitpid等待SIGSTOP,SIGCONT和SIGKILL这3种信号.#include <stdio.h>#include <sys/wait.h>#include <stdlib.h>#include <unistd.h>int main(void) pid_t pid,wait_pid; int
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 天津房地产市场研究报告调查分析总结
- 辽宁工程职业技术学院职测复习测试有答案
- CRH380AL型车组三级修复习测试题
- 气瓶复习测试题
- 结合案例分析2025年信息系统监理师考试试题及答案
- 针对性的公路工程试题及答案
- 现代物流管理综合测试题
- 合同协议诚意金协议
- 环境保护与污染治理测试题
- 行政组织的综合评价体系研究试题及答案
- 2023年上海海洋大学硕士研究生自然辩证法试题库完整版
- GA/T 445-2003公安交通指挥系统建设技术规范
- 发动机机械-01.1cm5a4g63维修手册
- 马克思主义新闻观十二讲之第八讲坚持新闻真实原则课件
- 交通信号控制系统检验批质量验收记录表
- 护理部用药安全质量评价标准
- 中国本土私募股权基金的投资管理及退出(清华)
- 汽车零部件规范申报ppt课件
- 门护板设计指导书RYSAT
- 沙盘游戏治疗(课堂PPT)
- 祭侄文稿颜真卿
评论
0/150
提交评论