Linux实验指导书

合集下载

Linux_实验指导书4版

Linux_实验指导书4版

嵌入式操作系统实验指导书目录实验一常用命令的使用实验二 vi编辑器实验三 shell编程(一)实验四 shell编程(二)实验五常用开发工具实验六 Linux环境编程(一)实验七 Linux环境编程(二)实验八系统及网络管理实验一常用命令的使用班级:姓名:学号:上机时间:任课教师:实验教师:实验成绩:一、实验目的1.掌握Linux的一般命令格式。

2.掌握有关文件和目录操作的常用命令。

3.掌握有关进程操作的常用命令。

4.熟练使用man命令。

二、实验任务1.正确登录和退出系统。

2.熟悉data,cal,who,echo,clear命令。

3.在用户主目录下对文件进行操作:复制一个文件、显示文件内容、查找指定内容、排序、文件比较、文件删除等。

4.对目录进行管理:创建和删除子目录、改变和显示工作目录、列出和更改文件权限、链接文件等。

5.利用man显示date,echo等命令的手册页。

三、实验注意事项实验环境与系统是共用设施,请不要在系统内做对系统或对其他用户不安全的事情。

要求每个同学登录后系统后,要在主目录(/home/student)下创建一个属于自己的子目录(以自己(拼音)名字或学号)。

以后所有工作都要在自己的目录内进行。

建议以后的实验都在同台计算机上做,这样可以保持连续性。

四、实验内容:1.登录进入系统。

开机,选择 VMware Workstation 进入,再选择 Ubuntu 登陆窗口,输入用户名: student ,输入密码: 111111 ,进入Ubuntu图形桌面环境。

2.使用简单命令:date,cal,who,echo,clear等,了解Linux命令格式。

要启动一个终端,可以选择在窗口左侧点击终端按钮。

在终端提示符下输入:date↲显示: 2015年 10月 15日星期四 08:31:50 CST 。

在终端提示符下输入:who ↲显示: student pst/1 2015-10-15 08:22(:0) 。

《Linux实用操作系统》实验指导书

《Linux实用操作系统》实验指导书

《Linux实用操作系统》课程实验指导书实验一、Red Hat Linux系统安装一、实验目的:1.掌握虚拟机软件VMWare的使用。

2.掌握Linux安装过程中的分区方法。

3.掌握Linux操作系统的安装和配置过程。

二、实验内容:安装red hat linux操作系统。

三、实验要求:一台pc机,Redhat 9.0,VMWare虚拟机软件。

四、实验课时2课时五、实验指导安装步骤如下:1.通过虚拟机VMWare开始安装RedHat9。

2.语言选择。

3.键盘配置。

4.鼠标配置。

5.选择安装还是升级。

6.安装类型。

7.磁盘分区设置。

8.系统配置。

9.选择引导装载程序。

10.配置联网。

11.防火墙配置。

12.安装并支持多种语言。

13.时区选择。

14.设置根口令。

15.选择软件包。

16.选择单个软件包。

17.安装软件包。

18.创建引导盘。

19.安装完成。

20.引导系统。

21.第一次启动运行,输入登陆用户和密码,登录系统。

实验二、linux常用命令一、实验目的:了解liunx的基本命令,熟练掌握其基本操作。

二、实验内容:1.操作linux常用命令。

2.查看命令执行后的结果。

3.完成相应的实验报告。

三、实验要求:一台pc机,Redhat 9.0,VMWare虚拟机软件。

四、实验课时4课时五、实验指导1.进入linux终端。

实验三、X Window系统一、实验目的:1.了解并掌握GNOME使用方法。

2.了解并掌握KDE使用方法。

二、实验内容:1.使用GNOME和KDE。

2.操作两种桌面环境下的常用软件。

3.对比两种桌面环境的不同。

三、实验要求:一台pc机,Redhat 9.0,VMWare虚拟机软件四、实验课时2课时五、实验指导1.配置X Window。

在如图所示的“X配置”窗口上选择“配置X窗口系统”按钮配置X 的第一步是选择默认的色彩深度和分辨率。

从相应的下拉菜单中选择它们。

确定指定与视频卡和显示器兼容的色彩深度及分辨率。

Linux程序设计实验指导书

Linux程序设计实验指导书

Linux程序设计实验指导书10/ 1前言根据教学大纲与实验大纲的安排,本课程计划进行8课时上机试验。

由于所有实验均涉及操作系统、程序设计等课程的多个知识点,希望各位同学认真准备。

?上机实验前应充分做好以下准备工作:1.复习和掌握与本次实验有关的教学内容。

2.根据本次实验的内容,在纸上编写好准备上机调试的程序,并初步检查无误。

3.准备好对程序进行测试的数据。

4.对每种测试数据,给出预期的程序运行结果。

5.预习实验步骤,对实验步骤中提出的一些问题进行思考。

?上机实验后,应及时写出实验报告,实验报告应包括以下内容:1.实验目的和内容。

2.程序说明,包括程序结构、各模块的算法。

3.调试正确的源程序。

4.程序运行记录(包括对不同测试数据的运行结果)。

5.针对实验中出现的问题,写出解决办法及对运行结果的分析。

本指导书适用于物联网工程专业学生学习“Linux程序设计”课程时实验使用。

10/ I.实验一:熟悉Linux实验学时:2实验类型:(验证)实验要求:(必修)一、实验目的Linux操作系统是多任务操作系统,对进程与线程提供完整支持。

本次实验意图通过实践掌握进程的基本概念,理解进程控制、进程同步、经典进程的同步问题、管程机制、进程通信、线程;初步熟悉多进程/多线程编程的特点。

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。

它能运行主要的UNIX工具软件、应用程序和网络协议。

它支持32位和64位硬件。

Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

本次实验意图通过实践了解Linux环境中常见的终端命令;熟悉文本编辑器leafpad 的使用。

二、实验内容本次实验的实验内容包括:1)熟悉man、cd、mkdir、rmdir、chmod、chown、ps、cat、ls命令;2) 练习使用文本编辑器leafpad。

linux-实验指导手册-常用命令

linux-实验指导手册-常用命令

实验一Linux常用命令(一)1、Shell环境和Shell命令格式如果实验用计算机上Linux以图形方式启动,登录系统后打开终端窗口。

方法:桌面:右键菜单-Terminal(终端);或:主菜单-系统工具-Terminal(终端)。

命令格式:command [-option(s)] [option argument(s)] [command argument(s)]步骤1:使用who命令步骤2:使用date命令步骤3:使用上下健提取历史命令who,执行。

2、文件系统操作命令(1)改变目录命令:cd 目标目录路径步骤1:使用绝对路径依次进入Linux根目录下的所有子目录。

例如:cd /usr/bin步骤2:使用绝对路径依次进入用户目录。

步骤3:使用相对路径进入子目录1)使用绝对路径进入/lib目录2)使用相对路径进入/lib/i868目录3)使用相对路径退回到/lib目录(2)列出并观察目录中的文件步骤1:进入任意目录,使用无参数ls命令列出并观察其中所有文件;步骤2:进入任意目录,使用通配符列出其中部分文件;例如:cd /binls c*步骤3:使用-l选项,列出目录中文件的各种属性,并观察识别这些属性。

步骤4:直接列出子目录中的文件。

例如:ls i868步骤5:仅列出子目录本身(-d)步骤6:使用-F选项,显示文件类型标志。

步骤7:使用-a或-A选项,观察结果有什么变化。

步骤8:综合使用以上选项。

(3)目录的创建与删除步骤1:在用户目录中,使用相对路径创建一个任意名称的目录,如“tmp”。

mkdir tmp步骤2:删除该目录rmdir tmp步骤3:在根目录中,使用绝对路径在用户命令中创建一个子目录。

mkdir ~/tmp步骤4:删除该目录rmdir ~/tmp步骤5:使用-p参数一次创建多级目录。

如:mkdir ~/tmp/dir1步骤6:使用-p参数删除多级目录。

如:cd ~rmdir tmp/dir1(4)文件和目录拷贝命令:cp步骤1:从/usr/include目录中,任选一个文件拷贝到用户目录的tmp子目录中mkdir ~/tmpcp /usr/include/signal.h ~/tmp步骤2:从/usr/include目录中,任选一个文件拷贝到用户目录的tmp子目录中,并改变其文件名。

Linux 网络操作系统实验指导书10最新

Linux 网络操作系统实验指导书10最新

《Linux 网络操作系统》实验指导书实验一Linux基本命令熟悉及文本编辑器使用1. Red Hat Linux的文件系统管理一、实验目的1、了解Linux操作系统的启动与登陆方法。

2、熟悉Linux字符界面、窗口系统的常用指令。

二、实验内容在字符界面下,使用常用的Linux操作命令,完成下列内容。

1.在根目录(/)下新建一目录 test[root@localhost root]# mkdir /test[root@localhost root]# cd /test[root@localhost test]# pwd/test2.改变当前目录至 /test ,在该目录下,以自己名字的英文缩写建一个空的文件,再建两个子目录(-xh)与(ah);[root@localhost text]# touch pyh[root@localhost text]# mkdri -- -xh[root@localhost text]# lsah pyh –xh[root@localhost text]# Is –l后[root@localhost text]# cd -- -xh[root@localhost text]# ls[root@localhost text]# touch text13.进入到(-xh)子目录中,新建一个空文件text1;[root@localhost -xh]# cd ..[root@localhost text]# lsah pyh –xh[root@localhost text]# cd ah[root@localhost text]# mkdir abc[root@localhost text]# touch text2[root@localhost text]# lsabc text24.进入到(ah)子目录中,再新建一个子目录(abc),同时建立空文件text2;5.把刚建的text1文件移动到刚建立的abc子目录下,并改名为text3,同时把text2文件复制到-xh子目录中;[root@localhost text]# lsah pyh –xh[root@localhost text]# cd -- -xh[root@localhost -xh]# lstext1[root@localhost -xh]# mv text1 /test/ah/abc[root@localhost -xh]# ls[root@localhost -xh]# cd /test/ah/abc/[root@localhost -xh]# lstext1[root@localhost -xh]# mv text1/text3[root@localhost -xh]# lstext36.删除text3文件与-xh子目录及目录中的文件;并删除abc子目录;[root@localhost root]# rm text3Y[root@localhost -xh]# ls[root@localhost -xh]# cd..[root@localhost root]# ls[root@localhost root]# abc text2[root@localhost root]# rmdir abc[root@localhost root]# lstext27.在根目录(/)下新建目录test,test1,把/etc/passwd分别复制到/test1与/test下,并分别改名为file1与file;[root@localhost root]# cd\[root@localhost root]# cd..[root@localhost root]# cp /etc/passwd ./[root@localhost root]# lsah passwd pyh –xh[root@localhost root]# mv passwd file[root@localhost root]# lsah file pyh -xh8.查看file1文件的前二行与最后二行,并记录;[root@localhost root]# cat file[root@localhost root]# head -2 file[root@localhost root]# tail -2 file9.查看/etc/目录下的文件,并记录前两个文件的文件名;10.查看/etc/目录中所有的文件中包含有sys字母的文件并记录;[root@localhost root]# find /etc/ -name “*sys*”[root@localhost root]# find /etc/ -name “*sys*” |more11.查看/etc/目录中文件包含有conf的前两个文件是什么;12.把/test/file文件建一个软链接文件file.soft到/test1中;13.清屏;[root@localhost root]# clear三、实验要求一台安装Linux9.0操作系统的计算机。

Linux程序开发环境 实验指导书 (实验3-4)

Linux程序开发环境 实验指导书 (实验3-4)

Linux程序开发环境实验指导书中南大学软件学院实验3 Linux Shell程序设计1、实验目的(1)掌握Linux shell程序运行方法(2)掌握Linux Shell程序基本语法(3)了解Linux环境变量(4)编写简单Linux shell程序2、实验内容完成简单CD唱片管理系统。

(1)需求假设你收集了大量的CD唱片,现在为了方便管理,需要设计和实现一个管理CD唱片的程序。

程序至少能够把每张CD唱片的资料保存起来,如唱片的名称、音乐类型、艺术家或作曲家的名字等;然后针对某张CD唱片而言,还需要保存一些简单的曲目信息;程序要可以以CD唱片为单位进行搜索,而不是以曲目为单位;为了使程序具备完整性,还需要实现对CD唱片资料的输入、修改和删除等功能。

(2)设计把标题信息和曲目信息分开,用两个文本文件分别来存储。

每张CD唱片保存如下信息:编号、标题、曲目类型(流行、爵士等)、作曲家等。

曲目只保存下面两个信息:编号和曲名。

如下表所示:各项信息用逗号来分隔。

(3)实现程序共包含如下函数:get_return()get_confirm()set_menu_choice() insert_title()insert_track()add_record_tracks() add_records()find_cd()update_cd()count_cds() remove_records() list_tracks()代码范例:3、实验记录(1)实验报告中提交系统的完整脚本;(2)记录实验过程中的心得体会。

实验4 Linux 高级程序设计1、实验目的(1) 了解Linux操作系统下应用程序开发流程(2) 掌握gun工具链的使用(3) 了解Linux高级编程技巧(例如IPC机制、系统调用等)2、实验内容(1) 编写一个简单的C语言程序,编写Makefile文件。

了解编译过程,并用gdb进行调试。

(2) 编写一段程序,适用系统调用fork( )创建两个新的子进程,此程序运行使系统中有三个活动进程存在。

Linux操作系统实验指导书

Linux操作系统实验指导书

Linux操作系统实验指导书《Linux系统管理与维护》实验指导书实验一初识Linux操作系统一实验名称初识Linux操作系统二实验目的与要求掌握Linux的启动、登录与注销。

三实验容1.以root用户和普通用户两种不同身份登录Linux,说出其登录后得差异。

2.图形模式下的注销、重启与关机。

3.学会在虚拟机上登录和注销Linux。

四操作步骤与结果分析五问题与建议实验二 Linux的桌面应用一实验名称Linux的桌面应用二实验目的与要求熟悉Linux操作系统桌面环境熟悉Linux文件系统及常用的操作掌握Linux下使用外部存储设备、网络设备掌握Linux下安装应用程序三实验容1.查看GNOME提供的“应用程序”、“位置”或者“系统”菜单,运行其中的应用程序和工具。

2.查看Linux文件目录结构,学会常用的文件目录操作,如复制、粘贴、移动、删除、更名、创建文档、创建文件夹等。

3.练习在Linux下使用光盘和U盘。

4.学会网络配置,使计算机能够进行网络浏览等操作。

5.学会在Linux下安装新的应用软件。

四操作步骤与结果分析五问题与建议实验三 Linux操作系统的安装一实验名称Linux操作系统的安装二实验目的与要求掌握安装Linux操作系统三实验容1.通过学习《项目五 Linux操作系统的安装及远程服务》的容,学会如何安装Linux。

环境:windows 系统、vmware虚拟机、Redhat Linux镜像光盘。

通过安装向导将安装分为两步:1、基本安装,2、配置及具体安装。

在第一阶段重点如何分区,在第二阶段重点掌握如何设置密码及安装桌面环境。

四操作步骤与结果分析五问题与建议实验四 Linux在系统管理中的应用一实验名称Linux在系统管理中的应用二实验目的与要求理解Linux文件系统,掌握文件目录命令。

掌握常用的文件管理命令。

理解Linux用户、组和权限的概念,掌握用户、组和权限管理命令。

理解设备文件的概念,掌握常用的设备管理命令。

LINUX实验指导书

LINUX实验指导书

安装Redhat5虚拟机1.按新建虚拟机。

最后完成即可。

2.安装Redhat5系统,启动虚拟机后就会自动运行CD,第一界面回车即可进入图形安装。

上图,是检查CD是否完整,可以跳过。

下一步就是完成配置,等待安装。

实验1 VSFTP服务器配置1、实验步骤实验里使用“ROOT”用户,其他用户可能会出现权限问题。

登录时使用“root”用户名来登录,这样就是使用ROOT用户权限了,密码是安装时设定的。

一、安装软件包((本步骤可省略,RHEL5默认已经安装)在桌面右键就可以打开终端,实验中命令都在终端里输入。

[root@localhost ~]#rpm –qa | grep vsftp //检查是否已经安装vsftpd软件包。

注意空格:rpm(空格)–qa(空格)| (空格)grep(空格)vsftpvsftpd-2.0.5-16.el5 //显示已经安装出现上面这句说明安装成功,不出现说明没安装过。

[root@localhost ~]# service vsftpd start //启动vsftpd 服务([root@localhost ~]# service vsftpd restart //重启vsftpd 服务)如果服务开着,start就会失败,要运行restart才会应用更改。

若没有安装,则进行以下步骤:[root@localhost ~]# mkdir /mnt/cdrom //建立用于挂载光驱的目录注意空格:mkdir(空格)/mnt/cdrom[root@localhost ~]# mount –t iso9660 /dev/cdrom /mnt/cdrom //挂载光驱注意空格:mount (空格)–t (空格)iso9660 (空格)/dev/cdrom (空格)/mnt/cdrom[root@localhost ~]# find /mnt/cdrom –named *vsftpd* //查找vsftpd有关的软件包注意空格:find (空格)/mnt/cdrom (空格)–named (空格)*vsftpd*实验指导书上写的是“–named”正确是“–name”[root@localhost ~]# rpm –ivh /mnt/cdrom/Server/vsftpd-2.0.5-16.el5.i386.rpm // 安装vsftpd软件包注意空格:rpm (空格)–ivh (空格)/mnt/cdrom/Server/vsftpd-2.0.5-16.el5.i386.rpm技巧:Tab键可以自动识别文件名,觉得命令很长时可以按“TAB”键试试。

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

Linux程序设计实验指导书计算机应用系2012年11月实验一:Linux常用命令及编程环境1.实验相关知识简述Unix/Linux环境下使用C语言程序开发的项目主要经历设计、开发、调试、集成、部署和维护几个阶段。

目前典型的开发环境,主要使用vi、emacs、gedit等文字编辑工具完成源代码的编辑工作;通过指定不同的GCC编译器编译选项指定编译结果,根据编译器提示改正程序中的语法错误,最终生成符合目标要求的可执行二进制文件;当可执行文件执行结果与预期结果不一致时,使用GDB调试器跟踪程序执行过程,查看中间变量,改正源程序中存在的逻辑错误。

在大型项目管理中,由于文件较多,整个编译过程费时较长,安装、调试难度较大。

为解决手工管理效率低下的问题,引入Make工具,将项目编译、安装、维护等工作以脚本的形式组织在Makefile中,从而简化项目维护成本。

手工编写Makefile脚本难度较大且不利于统一规范,推荐使用Autotools工具集直接生成。

本实验仅设置手工编辑、编译Linux C源代码,生成可执行文件并调试。

GNU CC(简称为GCC)是GNU 项目中符合ANSI C 标准的编译系统,能够编译用C、C++和Object C 等语言编写的源程序。

GCC也可理解为一个工具集合,包含多个编译相关工具,如gcc编译C语言源程序,g++编译C++语言源程序,ld链接器等。

在编译C语言程序时,可直接使用gcc指令通过配置不同的参数选项达到指定GCC工具集的目的。

GCC的常用选项如表1.1所示表1.1 GCC常用选项功能选项描述与编译相关的GCC 选项-c 只是编译不链接,生成目标文件“.o”-S 只是编译不汇编,生成汇编代码-E 只进行预编译,不做其他处理-g 在可执行程序中包含标准调试信息-o file 把输出文件输出到file 里-v 打印出编译器内部编译各过程的命令行信息和编译器的版本-I dir 在头文件的搜索路径列表中添加dir 目录-L dir 在库文件的搜索路径列表中添加dir 目录-static 链接静态库-llibrary 连接名为library 的库文件报警与出错相关的-ansi 支持符合ANSI 标准的C 程序-pedantic 允许发出ANSI C 标准所列的全部警告信息GCC选项-pedantic-error 允许发出ANSI C 标准所列的全部错误信息-w 关闭所有告警-Wall 允许发出Gcc 提供的所有有用的报警信息-werror 把所有的告警信息转化为错误信息,并在告警发生时终止编译过程与体系结构相关的GCC选项-mcpu=type 针对不同的CPU 使用相应的CPU 指令。

可选择的type 有i386、i486、pentium 及i686 等-mieee-fp 使用IEEE 标准进行浮点数的比较-mno-ieee-fp 不使用IEEE 标准进行浮点数的比较-msoft-float 输出包含浮点库调用的目标代码-mshort 把int 类型作为16 位处理,相当于short int-mrtd 强行将函数参数个数固定的函数用ret NUM 返回,节省调用函数的一条指令使用GCC注意事项:1)GCC指令的一般格式为:Gcc [选项] 需编译的文件[选项] [目标文件] ,其中,目标文件可缺省,GCC默认生成可执行的文件名为a.out。

执行时时使用指令./a.out;2)在include 语句中,“<>”表示在标准路径中搜索头文件,““””表示在当前目录中搜索。

故代码中使用“#include<myhead.h>”,就需要添加GCC编译选项“-I”指定myhead.h 所在路径;3)选项“-L dir ”的功能与“-I dir”类似,在编译时指定所需库文件路径,-l指定相应的库名称。

Linux下的库文件命名时规定:必须以lib字母组合开头,后接库名称。

因此用-l 选项指定链接库名为libsunq.so ,在命令中选项写为-lsunq;GDB调试相关命令汇总如表1.2所示表1.2 GDB相关命令汇总功能命令描述单步执行与函数跟踪backtrace(或bt)查看各级函数调用及参数finish 执行到当前函数返回,然后停下来等待命令frame(或f)帧编号选择栈帧info(或i)locals 查看当前栈帧局部变量的值list(或l)列出源代码,接着上次的位置往下列,每次列10行list 行号列出从第几行开始的源代码list 函数名列出某个函数的源代码next(或n)执行下一行语句print(或p)打印表达式的值,通过表达式可以修改变量的值或者调用函数set var 修改变量的值start 开始执行程序,停在main函数第一行语句前面等待命令step(或s)执行下一行语句,如果有函数调用则进入到函数中断点break(或b)行号在某一行设置断点break 函数名在某个函数开头设置断点break...if... 设置条件断点continue(或c)从当前位置开始连续而非单步执行程序delete breakpoints 删除断点display 变量名跟踪查看一个变量,每次停下来都显示它的值disable breakpoints 禁用断点enable breakpoints 启用断点info(或i)breakpoints 查看当前设置了哪些断点run(或r)从头开始连续而非单步执行程序undisplay 取消对先前设置的那些变量的跟踪观察点watch 设置观察点info(或i)watchpoints 查看当前设置了哪些观察点x 从某个位置开始打印存储器的一段内容,全部当成字节来看,而不区分哪些字节属于哪些变量GDB使用注意事项:1)在Gcc 编译选项中一定要加入“-g”;2)只有在代码处于“运行”或“暂停”状态时才能查看变量值;3)设置断点后程序在指定行之前停止;2.实验目的1)掌握Linux C开发过程中的基本概念;2)掌握如GCC,GDB等开发工具的使用;3.实验内容将参考代码录入到greet.c文件中,编译执行后发现结果与预期不一致,请使用GDB调试,完成字符串反序输出功能;4.参考代码5.实验扩展思考1)如何使用GCC将一组功能相关的源文件编译成相应库文件(静态库或动态库自行选择),并使用代码形式演示如何使用编译好的库?2)分析以下代码,完成指定范围内数值累加功能:#include <stdio.h>int add_range(int low, int high){int i, sum;for (i = low; i <= high; i++)sum = sum + i;return sum;}int main(void){int result[100];result[0] = add_range(1, 10);result[1] = add_range(1, 100);printf("result[0]=%d\nresult[1]=%d\n", result[0], result[1]);return 0;}实验二:文件I/O操作1.实验相关知识简述“文件”是Unix/Linux平台的核心概念之一。

广义理解,可将普通文件、目录、设备、管道……均视为文件(Everything is File);狭义理解,文件仅代表普通文件。

涉及具体上下文时,需要结合语义对其进行区分。

Unix/Linux相关文件系统在组织文件时,将文件的数据与属性分离。

目录文件中记录子目录及所属文件的文件名和相应i节点,由i节点记录相应的数据存储位置及文件属性。

针对文件内容时行操作时,一般需要经历步骤为:打开/创建文件→操作文件→关闭文件。

打开/创建文件推荐使用系统调用open,若仅需新建文件,亦使用creat系统调用,但creat 不负责打开文件。

为保证程序运行时无异常发生,程序员必须对open返回值进行判断,若返回值为-1意味着文件打开失败,其原因或为进程已打开的文件数目超出可打开文件的最大值,或为相应路径下无对应文件(注意:Unix/Linux文件名区分大小写);当open调用成功时,将返回一个由内核管理生成的非负整型数值,对应术语为文件描述符(File Descriptor)。

对文件内容操作时,文件描述符将自动维护文件读写指针。

换句话说,多个进程可同时打开一个文件,并在各自的文件读写指针位置进行相应操作,程序员有责任对其进行合理规划,以保证数据有效性。

进程创建时,Linux内核将值为0,1,2这三个文件描述符预分配给标准输入设备、输出设备和错误输出设备。

若使用dup系统调用,可干预内核分配文件描述符,从而达到文件重定向的目的。

open语法要点如表2.1所示:表2.1 open语法要点头文件#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>功能打开或创建文件函数原型int open(const char* path, int flags)int open(const char* path, int flags, int perms)参数说明path 需打开或创建的文件路径名flags 文件打开方式:O_RDONLY:只读方式O_WRONLY:只写方式O_RDWR:读写方式O_CREAT:如果文件不存在就创建文件,并以参数perms设置文件权限O_EXCL:测试文件是否存在,如果O_CREAT创建文件时,文件已存在则返回错误消息O_TRUNC:如果文件存在,打开文件后将已存在的文件内容删除,并定位于文件开始处O_APPEND:打开文件,在尾部添加内容perms 新建文件时以八进制方式设置文件权限属性,只用于读或写时此参数可省略函数返回值成功:返回打开或新建文件的文件描述符失败:-1文件内容读写时,内核负责内存与文件所在存储设备之间的数据流动。

程序员负责规划代表文件读或写时使用的缓冲区大小与类型,其类型设置,通常与操作的目标文件类型相关。

l 当操作以二进制为单位存储的文件时,内存缓冲多使用byte类型数组;l 在操作以字符为单位的存储文件时,内在缓冲多使用char类型数组;注意:若违反文件编码方案,文件内容显示乱码;表2.2 read语法要点头文件#include <unistd.h>函数原型ssize_t read(int fd, void* buffer, size_t len)功能读取文件内容函数参数fd 所读文件的文件描述符buffer 存放文件读取内容的缓冲len 缓冲长度函数返回值成功:返回实际读取的字节数(不大于len),0表示到达文件结束位置; 失败:-1表2.3 write 语法要点头文件#include <unistd.h>函数原型ssize_t write(int fd, void* buffer, size_t len) 功能写文件内容函数参数fd 所写文件的文件描述符buffer 需写入文件的内容缓冲len 缓冲长度函数返回值成功:返回实际实际写入文件的字节数(=len); 失败:-1文件定位系统调用lseek实现文件读写指针在文件中移动。

相关文档
最新文档