《计算机操作系统实验指导书-操作系统实验指导书.pdf》由会员分享,可在线阅读,更多相关《计算机操作系统实验指导书-操作系统实验指导书.pdf(107页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 计 算 机 操 作 系 统 实 验 指 导 书 实 验 一 UNIX/LINUX及 其 使 用 环 境()UNIX常 用 命 令 简 介 实 验 目 的 1、了 解 UNIX的 命 令 及 使 用 格 式。2、熟 悉 UNIX/LINUX的 常 用 基 本 命 令。实 验 内 容 1、通 过 WINDOWS操 作 系 统 中 的 远 程 登 录 程 序 telnet.exe登 录 UNIX。2、熟 悉 UNIX/LINUX 的 常 用 基 本 命 令 如 Is、w ho、w、pw d、ps、pstree、top等。3、通 过 WINDOWS操 作 系 统 中 的 FTP程 序,练 习 WIN
2、DOWS和 UNIX之 间 的 文 件 交 换。实 验 准 备 预 习 附 录 一 UNIX/LINUX简 介 实 验 指 导 一、UNIX的 登 录 与 退 出 1、登 录 在 D O S环 境 下 用 M S提 供 的 te ln e t程 序(也 可 使 用 W INDOW S自 带 的 te ln e t图 形 界 面 程 序 或 多 功 能 的 S-Term终 端 程 序),可 使 PC作 为 终 端(term inal)登 录(login)U N IX服 务 器(U N IX Server)。(1)执 行 格 式:telnet或 telnet例:telnet或 telnet(2)步
3、 骤 hostname(主 机 名)主 机 的 IP地 址 210.38.206.11login:password:(实 验 室 Linux主 机 地 址)(输 入 username,如 jsj041)(输 入 密 码,如 jsj041)2、退 出 在 UNIX系 统 提 示 符$下,输 入 logout、exit或 shutdown。例:$logout二、UNIX命 令 格 式 命 令 选 项 处 理 对 象 例:Is-la mydir注 意:(1)命 令 一 般 是 小 写 字 串。注 意 大 小 写 有 别(2)选 项 通 常 以 减 号(-)再 加 上 一 个 或 数 个 字 符 表
4、示,用 来 选 择 一 个 命 令 的 不 同 操 作(3)同 一 行 可 有 数 个 命 令,命 令 间 应 以 分 号 隔 开(4)命 令 后 加 上&可 使 该 命 令 后 台(background)执 行 三、常 用 命 令 1、目 录 操 作 和 DOS相 似,UNIX采 用 树 型 目 录 管 理 结 构,由 根 目 录(/)开 始 一 层 层将 子 目 录 建 下 去,各 子 目 录 以/隔 开。用 户 lo g in后,工 作 目 录 的 位 置 称 为 home directory,由 系 统 管 理 员 设 定。符 号 代 表 自 己 的 home directory,例
5、如-/m yfile是 指 自 己 hom e目 录 下 myfile这 个 文 件。UNIX的 通 配 符 有 三 种:*,和?用 法 与 DOS相 同,代 表 区 间 内 的 任 一 字 符,如 testO-5即 代 表 test。,testl,.,test5 的 集 合。(1)显 示 目 录 文 件 1 s执 行 格 式:Is-atFlgR name(name可 为 文 件 或 目 录 名 称)注:1s与 其 它 命 令 搭 配 使 用 可 以 生 出 很 多 技 巧(最 简 单 的 如“Is-1 more),更 多 用 法 请 输 入 Is help查 看,其 它 命 令 的 更 多
6、用 法 请 输 入 命 令 名 一 h e l p 查 看.例:IsIs-aIs-tIs-FIs-1修 改 时 间 及 名 称 显 示 出 当 前 目 录 下 的 文 件 显 示 出 包 含 隐 藏 文 件 的 所 有 文 件 按 照 文 件 最 后 修 改 时 间 显 示 文 件 显 示 出 当 前 目 录 下 的 文 件 及 其 类 型 显 示 目 录 下 所 有 文 件 的 许 可 权、拥 有 者、文 件 大 小、Is-1gIs-R同 上 显 示 出 该 目 录 及 其 子 目 录 下 的 文 件 rm-r f d irl 不 管 是 否 空 目 录,统 统 删 除,而 且 不 给 出
7、提 示,使(2)建 新 目 录 执 行 格 式:例:(3)删 除 目 录 执 行 格 式:例:rondir dirlrm-r dirlmkdirmkdir directory-namemkdir dirl(新 建 一 名 为 d i r l的 目 录)rmdirrmdir directory-name 或 rm directory-name删 除 目 录 d i r l,但 它 必 须 是 空 目 录,否 则 无 法 删 除 删 除 目 录 d irl及 其 下 所 有 文 件 及 子 目 录 用 时 要 小 心(4)改 变 工 作 目 录 位 置 cd执 行 格 式:cd name例:cdc
8、d d irlcd usercdcd/user改 变 目 录 位 置 至 用 户 login时 的 working directory改 变 目 录 位 置,至 d i r l目 录 改 变 目 录 位 置,至 用 户 的 working directory改 变 目 录 位 置,至 当 前 目 录 的 上 层 目 录 改 变 目 录 位 置,至 上 一 级 目 录 下 的 u se r目 录 cd/dir-name 1/dir-name2 改 变 目 录 位 置,至 绝 对 路 径(Fullcdpath)回 到 进 入 当 前 目 录 前 的 上 一 个 目 录(5)显 示 当 前 所 在
9、目 录 pwd执 行 格 式:pwd(6)查 看 目 录 大 小 du执 行 格 式:du-s directory例:du dirl 显 示 目 录 d i r l及 其 子 目 录 容 量(以 k b为 单 位)du-s dirl 显 示 目 录 d i r l的 总 容 量(7)显 示 环 境 变 量 echo$H 0M Eecho$PATHenv显 示 家 目 录 显 示 可 执 行 文 件 搜 索 路 径 显 示 所 有 环 境 变 量(可 能 很 多,最 好 用 env|more,envgrep PATH”等)(8)修 改 环 境 变 量,在 bash下 用 e x p o rt,如
10、:export PATH=$PATH:/usr/local/bin想 知 道 e x p o r t的 具 体 用 法,可 以 用 s h e l l的 h e lp命 令:help export2、文 件 操 作(1)查 看 文 件(可 以 是 二 进 制 的)内 容 cat执 行 格 式:cat filename more filename 或 cat filenamelmore例:cat filel 以 连 续 显 示 方 式,查 看 文 件 file 1的 内 容 more file 1或 cat file llm o re以 分 页 方 式 查 看 文 件 的 内 容(2)删 除 文
11、 件 rm(5)比 较 文 件(可 以 是 二 进 制 的)或 目 录 的 内 容 diff执 行 格 式:diff-r name 1 name2(name 1、nam e2同 为 文 件 或 目 录)例:diff filel file2 比 较 filel 与 file2 的 不 同 处 执 行 格 式:rm filename例:rm file?rm f*(3)复 制 文 件 cp执 行 格 式:cp-r source destination例:cp filel file2 将 f il e l复 制 成 file2cpfilel dirl 将 f i l e l复 制 到 目 录 dirl
12、cp/tmp/filel 将 f il e l复 制 到 当 前 目 录 cp/tmp/filel file2 将 f i l e l复 制 到 当 前 目 录 名 为 file2cp-r dirl dir2(recursive copy)复 制 整 个 目 录。(4)移 动 或 更 改 文 件、目 录 名 称 mv执 行 格 式:mv source destination例:mv filel file2 将 文 件 f i l e l,更 名 为 file2mvmvfilel dirldirl dir2将 文 件 f i l e l,移 至 1 目 录 d i r l下diff-r dirl
13、 dir2 比 较 dirl 与 dir2 的 不 同 处(6)文 件 中 字 符 串 的 查 找 grep执 行 格 式:grep string file例:grep abc filel 查 找 并 列 出 串 abc所 在 的 整 行 文 字(7 1文 件 或 命 令 的 路 径 寻 找 执 行 格 式 一:whereis c o m m an d显 示 命 令 的 路 径 执 行 格 式 二:which command 显 示 路 径 及 使 用 者 所 定 义 的 别 名 执 行 格 式 三:whatis c o m m an d显 示 命 令 的 功 能 摘 要 执 行 格 式 四:
14、find search-path-name filename-print搜 寻 指 定 路 径 下 某 文 件 的 路 径 执 行 格 式 五:locate filename根 据 系 统 预 先 生 成 的 文 件/目 录 数 据 库(/var/1 ib/slo cate/slo cate.db)查 找 匹 配 的 文 件/目 录,查 找 速 度 很 快,如 果 有 刚 进 行 的 文 件 改 变 而 系 统 未 到 执 行 定 时 更 新 数 据 库 的 时 间,可 以 打 入 updatedb命 令 手 动 更 新.(8)建 立 文 件 或 目 录 的 链 接 In例:In source
15、 targ et 1 建 立 source文 件(已 存 在)的 硬 链 接,命 名 为 ta rg e tlIn-s source target2 建 立 source文 件 的 符 号 链 接,命 名 为 target23、系 统 询 问 与 权 限 口 令(1)查 看 系 统 中 的 使 用 者 执 行 格 式:who(2)查 看 username执 行 格 式:who am I 查 看 自 己 的 username(3)改 变 自 己 的 username的 帐 号 与 口 令 su执 行 格 式:su username例:su username 输 入 帐 号 password 输
16、入 密 码(4)文 件 属 性 的 设 置 chmod改 婴 文 件 或 目 录 的 读、写、执 行 的 允 许 权 执 行 格 式:chmod-R mode name其 中:-R为 递 归 处 理,将 指 定 目 录 下 所 有 文 件 及 子 目 录 一 并 处 理 mode为 3-8位 数 字,是 文 件/目 录 读、写、执 行 允 许 权 的 缩 写(r:read,数 字 代 号 为 4 w:w rite,数 字 代 号 为 2 x:execute,数 字 代 号 为 1)mode:rwx rwx rwxuser group other缩 写:(u)(g)(o)例:chmod 755
17、dirl 将 目 录 dirl设 定 成 任 何 人 皆 有 读 取 及 执 行 的 权 利,但 只 有 拥 有 者 可 作 写 修 改。其 中 7=4+2+1,5=4+1chmod 700 filel 将 file l设 为 拥 有 者 可 以 读、写 和 执 行 chmod o+x file2 将 file 2,增 加 拥 有 者 可 执 行 的 权 利 chmod g+x file3 将 file 3,增 加 组 使 用 者 可 执 行 的 权 利 chmod o-r file4 将 file%除 去 其 它 使 用 者 可 读 取 的 权 利(5)改 变 文 件 或 目 录 所 有 权
18、 chown执 行 格 式:chown-R username name例:chown user filel 将 文 件 file 1改 为 user所 有 chown.fox f i le l 将 文 件 f i l e l改 为 fox组 所 有 chown user,fox f i l e l 将 文 件 f i l e l改 为 fox组 的 user所 有 chown-R user dirl 将 目 录 d irl及 其 下 所 有 文 件 和 子 目 录,改 为 u se r所 有(6)检 查 用 户 所 在 组 名 称 groups执 行 格 式:groups(7)改 变 文 件
19、或 目 录 的 组 拥 有 权 chgrp执 行 格 式:chgrp-R groupname name例:chgrp vlsi filel 将 文 件 file l改 为 vlsi组 所 有 chgrp-R image dirl 将 目 录 d ir l及 其 下 所 有 文 件 和 子 目 录,改 为 image藉 组(8)改 变 文 件 或 目 录 的 最 后 修 改 时 间 touch执 行 格 式:touch name4、进 程 操 作(1)查 看 系 统 目 前 的 进 程 ps执 行 格 式:ps-aux例:p s 或 ps-x 查 看 系 统 中 属 于 自 己 的 proces
20、sps-au 查 看 系 统 中 所 有 使 用 者 的 processps-aux 查 看 系 统 中 包 含 系 统 内 部 及 所 有 使 用 者 的 processps-aux|grep apache 找 出 系 统 中 运 行 的 所 有 名 称 中 森 有“apache”串 的 process(2)查 看 正 在 background中 执 行 的 process执 行 格 式:jobs(3)结 束 或 终 止 进 程 kill执 行 格 式:kill-9 PID(P I D 为 利 用 p s命 令 所 查 出 的 process ID)例:kill 456或 kill-9 45
21、6 终 止 process ID 为 456 的 process(4)后 台(background)执 行 process command 的 命 令 执 行 格 式:command&(在 命 令 后 加 上&)例:gcc filel&在 后 台 编 译 filel.c注 意:按 下 人 2,暂 停 正 在 执 行 的 processo 键 入“bg,将 所 暂 停 的 process置 入 background中 继 续 执 行。例:gcc filel&AZstoppedbg(5)结 束 或 终 止 在 background中 的 进 程 kill执 行 格 式:kill%n例:kill%1
22、 终 止 在 background中 的 第 一 个 jobkill%2 终 止 在 background中 的 第 二 个 job(6)显 示 系 统 中 程 序 的 执 行 状 态 例:top-q 不 断 地 更 新、显 示 系 统 程 序 的 执 行 状 态 第 一 行 显 示 的 项 目 依 次 为 当 前 时 间、系 统 启 动 时 间、当 前 系 统 登 录 用 户 数 目、平 均 负 载。第 二 行 为 进 程 情 况,依 次 为 进 程 总 数、休 眠 进 程 数、运 行 进 程 数、僵 死 进 程 数、终 止 进 程 数。第 三 行 为 CPU状 态,依 次 为 用 户 占
23、用、系 统 占 用、优 先 进 程 占 用、闲 置 进 程 占 用。第 四 行 为 内 存 状 态,依 次 为 平 均 可 用 内 存、已 用 内 存、空 闲 内 存、共 享 内 存、缓 存 使 用 内 存。第 五 行 为 交 换 状 态,依 次 为 平 均 可 用 交 换 容 量、已 用 容 量、闲 置 容 量、高 速 缓 存 容 量。PID每 个 进 程 的 ID。PPID每 个 进 程 的 父 进 程 ID。UID每 个 进 程 所 有 者 的 UID。USER每 个 进 程 所 有 者 的 用 户 名。PRI每 个 进 程 的 优 先 级 别。N I 该 进 程 的 优 先 级 值。S
24、IZE该 进 程 的 代 码 大 小 加 上 数 据 大 小 再 加 上 堆 栈 空 间 大 小 的 总 数。单 位 是 KB。TSIZE该 进 程 的 代 码 大 小。对 于 内 核 进 程 这 是 一 个 很 奇 怪 的 值。DSIZE数 据 和 堆 栈 的 大 小。TRS文 本 驻 留 大 小。D 被 标 记 为“不 干 净”的 页 项 目。LTB使 用 的 库 页 的 大 小。对 于 ELF进 程 没 有 作 用。RSS该 进 程 占 用 的 物 理 内 存 的 总 数 量,单 位 是 KB。SHARE该 进 程 使 用 共 享 内 存 的 数 量。STAT该 进 程 的 状 态。其
25、中 S代 表 休 眠 状 态;D代 表 不 可 中 断 的 休 眠 状 态;R代 表 运 行 状 态;Z代 表 僵 死 状 态;T代 表 停 止 或 跟 踪 状 态。TIME该 进 程 自 启 动 以 来 所 占 用 的 总 CPU时 间。如 果 进 入 的 是 累 计 模 式,那 么 该 时 间 还 包 括 这 个 进 程 子 进 程 所 占 用 的 时 间。且 标 题 会 变 成 CTIME。%CPU该 进 程 自 最 近 一 次 刷 新 以 来 所 占 用 的 CPU时 间 和 总 时 间 的 百 分 比。%MEM该 进 程 占 用 的 物 理 内 存 占 总 内 存 的 百 分 比。C
26、OMMAND该 进 程 的 命 令 名 称,如 果 一 行 显 示 不 下,则 会 进 行 截 取。内 存 中 的 进 程 会 有 一 个 完 整 的 命 令 行按 ctrl+c 停 止 查 看(7)以 树 状 图 显 不 执 行 的 程 序 pstree例:pstree-h 列 出 进 程 树 并 高 亮 标 出 当 前 执 行 的 程 序(8)监 视 虚 拟 内 存 vmstatvmstat对 系 统 的 虚 拟 内 存、进 程、CPU活 动 进 行 监 视,同 时 它 也 对 磁 盘 和 forks和 vforks操 作 的 个 数 进 行 汇 总。不 足 是:vmstat不 能 对 某
27、 个 进 程 进 行 深 入 分 析,例 如:angel/angel#vmstat它 仅 是 一 对 系 统 的 整 体 情 况 进 行 分 析。procsr b0 0其 中:Procsw swpd0 7180free1852memorybuff cache56092 48400swapsi so0 0bi6iobo5in24systemcs8us0cpusy id0 18r:等 待 运 行 的 进 程 数 b:处 在 非 中 断 睡 眠 状 态 的 进 程 数 w:被 交 换 出 去 的 可 运 行 的 进 程 数。Memoryswpd:虚 拟 内 存 使 用 情 况,单 位:KB free
28、:空 闲 的 内 存,单 位 KBbuff:被 用 来 做 为 缓 存 的 内 存 数,单 位:KBSwapsi:从 磁 盘 交 换 到 内 存 的 交 换 页 数 量,单 位:KB/秒 so:从 内 存 交 换 到 磁 盘 的 交 换 页 数 量,单 位:KB/秒 10bi:发 送 到 块 设 备 的 块 数,单 位:块/秒 bo:从 块 设 备 接 收 到 的 块 数,单 位:块/秒 Systemin:每 秒 的 中 断 数,包 括 时 钟 中 断 cs:每 秒 的 环 境(上 下 文)切 换 次 数 CPU按 CPU的 总 使 用 百 分 比 来 显 示 us:CPU使 用 时 间 sy
29、:CPU系 统 使 用 时 间 id:闲 置 时 间(9)分 析 共 享 内 存、信 号 量 和 消 息 队 列 ipcs(相 关 命 令 ipcrm:用 于 给 有 权 限 的 用 户 清 除 这 些 量,注 意 不 要 乱 清 除,除 非 该 量 确 实 失 效 了)例 如:angelhome/angel#ipcs-Shared Memory Segments-key shmid owner perms bytes nattch status0 x00280267 0 root 644 1048576 10 x61715f01 1 root 666 32000 330 x00000000
30、2 nobody 600 92164 11 destSemaphore Arrayskey semid owner perms nsems status0 x00280269 0 root 666 140 x61715f02 257 root 777 1-Message Queues-key msqid owner perms used-bytes messages(10)监 视 用 户 空 间 程 序 发 出 的 全 部 系 统 调 用 stracestrace还 能 显 示 调 用 的 参 数,以 及 用 符 号 方 式 表 示 的 返 回 值。strace从 内 核 中 接 收 信 息,
31、所 以 一 个 程 序 无 论 是 否 按 调 试 方 式 编 译(gcc-g)或 是 否 被 去 掉 了 调 试 信 息,都 可 以 被 跟 踪。执 行 格 式:strace-tTeo execu tab 1 e-program-name-t:用 来 显 示 调 用 发 生 的 时 间-T:显 示 调 用 花 费 的 时 间-e:限 定 被 跟 踪 的 调 用 类 型-o:将 输 出 重 定 向 到 一 个 文 件 中 类 似 命 令:Itrace-fiS executab 1 e-program-name5、通 信 类(1)本 地 工 作 站 与 UNIX服 务 器 间 的 文 件 传 输
32、 ftp执 行 格 式:ftp 主 机 名 或 ftp 主 机 的 IP地 址 后 续 执 行 步 骤:name:password:ftphelpftplcd dirlftpget filelftpput file2ftp!lsftp!pwdftplsftpdirftppwdftpcd dirlftpmget*.cftpmput*.txtftpquitftpbye输 入 帐 号 输 入 密 码 显 示 ftp可 使 用 的 所 有 命 令 改 变 本 地 机 当 前 目 录 为 dirl将 UNIX服 务 器 文 件 file l拷 到 本 地 机 将 本 地 文 件 file 2,拷 到 U
33、NIX服 务 器 显 示 本 地 机 当 前 目 录 下 所 有 文 件 显 示 本 地 机 当 前 所 在 目 录 下 所 有 文 件 显 示 UNIX服 务 器 当 前 目 录 下 所 有 文 件 显 示 服 务 器 当 前 目 录 下 所 有 文 件(略 同 于 UNIX的 1 s-1指 令)显 示 UNIX服 务 器 当 前 所 有 目 录 位 置 更 改 UNIX服 务 器 的 目 录 至 d ir l下 将 服 务 器 中.c 文 件 拷 到 本 地 机 中 将 所 有.t x t文 件 拷 贝 到 服 务 器 结 束 ftp工 作 结 束 ftp工 作(2)检 查 与 UNIX服
34、 务 器 连 接 是 否 正 常 ping执 行 格 式:ping hostname或 ping IP-Address例:ping 127.1.1.1(3)将 文 件 当 做 E-mail的 内 容 送 出 mail执 行 格 式:mail-s Subjict-string“usernameaddressfilename例:mail-s program user file.c功 能:将 file.c 当 做 mail 的 内 容,送 至 user,subject name 为 program(4)传 送 E-mail给 本 地 UNIX服 务 器 上 的 用 户 mail执 行 格 式:mai
35、l username(5)读 取 信 件 mail执 行 格 式:mail(6)列 出 套 接 字 使 用 情 况 so ck list(7)查 看 网 络 连 接 n e tsta t6、I/O命 令(1)管 道(pipe-line)的 使 用 执 行 格 式:command 1 Icommand2功 能:W command 1的 执 行 结 果 送 到 command2作 为 输 入 例:Is-RII more 以 分 页 方 式 列 出 当 前 目 录 文 件 及 子 目 录 名 称 cat filellmore 以 分 页 方 式,列 出 file l的 内 容(2,标 准 输 入 控
36、 制 执 行 格 式:command-linefile 将 file 作 为 command-line 的 输 入 例:mail-s mail test useriis.sinica.edu.twfilename功 能:将 command的 执 行 结 果 送 至 指 定 的 filename中 例:Is-1 list 将 执 行 Is-F 的 结 果 写 入 文 件 list中 执 行 格 式 二:command!filename功 能:同 上,若 filename文 件 已 存 在,则 强 迫 重 写 执 行 格 式 三:command&filename功 能:将 command执 行 所
37、 产 生 的 任 何 信 息 写 入 filename执 行 格 式 四:commandfilename功 能:将 command的 执 行 结 果,附 加(append)到 filename拟 I行 格 式 五:command&tllename?功 能:将 command执 行 所 产 生 的 任 何 信 息 附 加 于 filename中 7、其 它 常 用 命 令(1)命 令 在 线 帮 助 man执 行 格 式:man command例:man Is 查 询 Is这 个 指 令 的 用 法(2)设 定 命 令 记 录 表 长 度 history执 行 格 式 一:set history
38、=n例:set history=40功 能:设 定 命 令 记 录 表 长 度 为 40(可 记 载 执 行 过 的 前 面 4 0个 命 令)执 行 格 式 二:history 查 看 命 令 记 录 表 的 内 容(3)显 示 说 明 info执 行 格 式:info command-name例:info gcc功 能:查 看 gcc的 说 明,按 上 下 箭 头 选 定 菜 单,回 车 进 入,u键 返 回 上 级 菜 单.info不 加 参 数 则 进 入 最 上 一 级 菜 单.四、用 cat命 令 查 看/proc动 态 文 件 系 统 目 录 下 的 文 件,辨 识 其 中 的
39、系 统 信 息.例 如:cat interrupts 列 出 当 前 中 断 占 用 情 况 cat ioports 列 出 设 备 的 硬 件 10占 用 情 况 cat pci 列 出 pci设 备 的 情 况 实 验 一 UNIX/LINUX及 其 使 用 环 境(二)LINUX下 C语 言 使 用、编 译 与 调 试 实 验 实 验 目 的 1、复 习 C 语 言 程 序 基 本 知 识 2、练 习 并 掌 握 UNIX提 供 的 vi编 辑 器 来 编 译 C 程 序 3、学 会 利 用 gcc、gdb编 译、调 试 C 程 序实 验 内 容 1、用 v i编 写 一 个 简 单 的
40、、显 示 Hello,World!的 C程 序,用 gcc编 译 并 观 察 编 译 后 的 结 果 2、利 用 gdb调 试 该 程 序 3、运 行 生 成 的 可 执 行 文 件。实 验 指 导 一、C 语 言 使 用 简 介 LINUX中 包 含 了 很 多 软 件 开 发 工 具。它 们 中 的 很 多 是 用 于 C 和 C+应 用 程 序 开 发 的。C 是 一 种 能 在 U N IX的 早 期 就 被 广 泛 使 用 的 通 用 编 程 语 言。它 最 早 是 由 Bell实 验 室 的 Dennis Ritchie为 了 UNIX的 辅 助 开 发 而 写 的,从 此 C 就
41、 成 为 世 界 上 使 用 最 广 泛 的 计 算 机 语 言。C 能 在 编 程 领 域 里 得 到 如 此 广 泛 支 持 的 原 因 有:(1)它 是 一 种 非 常 通 用 的 语 言,并 且 它 的 语 法 和 函 数 库 在 不 同 的 平 台 上 都 是 统 一 的,对 开 发 者 非 常 有 吸 引 力;(2)用 C 写 的 程 序 执 行 速 度 很 快;(3)C 是 所 有 版 本 UNIX上 的 系 统 语 言;二、文 件 编 辑 器 viv i是 在 U N IX上 被 广 泛 使 用 的 中 英 文 编 辑 软 件。v i是 visual editor的 缩 写,是
42、 UNIX提 供 给 用 户 的 一 个 窗 口 化 编 辑 环 境。进 入 v i,直 接 执 行 v i编 辑 程 序 即 可。例:$vi test.c显 示 器 出 现 v i的 编 辑 窗 口,同 时 v i会 将 文 件 复 制 一 份 至 缓 冲 区(buffer)0v i先 对 缓 冲 区 的 文 件 进 行 编 辑,保 留 在 磁 盘 中 的 文 件 则 不 变。编 辑 完 成 后,使 用 者 可 决 定 是 否 要 取 代 原 来 旧 有 的 文 件。1、v i的 工 作 模 式 v i提 供 二 种 工 作 模 式:输 入 模 式(insert m o d e)和 命 令
43、模 式(commandmode)0使 用 者 进 入 v i后,即 处 在 命 令 模 式 下,此 刻 键 入 的 任 何 字 符 皆 被 视 为 命 令,可 进 行 删 除、修 改、存 盘 等 操 作。要 输 入 信 息,应 转 换 到 输 入 模 式。(1)命 令 模 式 在 输 入 模 式 下,按 E SC可 切 换 到 命 令 模 式。命 令 模 式 下,可 选 用 下 列 指 令 离 开 vi:q!离 开 v i,并 放 弃 刚 在 缓 冲 区 内 编 辑 的 内 容 wqZZ将 缓 冲 区 内 的 资 料 写 入 磁 盘 中,并 离 开 vi同 wq同 wq将 缓 冲 区 内 的
44、资 料 写 入 磁 盘 中,但 并 不 离 开 viXW离 开 v i,若 文 件 被 修 改 过,则 要 被 要 求 确 认 是 否 放弃 修 改 的 内 容,此 指 令 可 与:W配 合 使 用(2)命 令 模 式 下 光 标 的 移 动 H左 移-一 个 字 符 J下 移 一 个 字 符 K上 移 一 个 字 符 L右 移 一 个 字 符 0 移 至 该 行 的 首$移 至 该 行 的 末 A移 至 该 行 的 第 一 个 字 符 处 H移 至 窗 口 的 第 一 列 M移 至 窗 口 中 间 那 一 列 L移 至 窗 口 的 最 后 一 列 G移 至 该 文 件 的 最 后 一 列 W
45、,W 下 一 个 单 词(W忽 略 标 点)B,B 上 一 个 单 词(B 忽 略 标 点)+移 至 下 一 列 的 第 一 个 字 符 处-移 至 上 一 列 的 第 一 个 字 符 处(移 至 该 句 首)移 至 该 句 末(移 至 该 段 首)移 至 该 段 末 NG移 至 该 文 件 的 第 n 列 N+移 至 光 标 所 在 位 置 之 后 第 n 列 n-移 至 光 标 所 在 位 置 之 前 第 n 列(3)输 入 模 式 输 入 以 下 命 令 即 可 进 入 v i输 入 模 式:a(append)在 光 标 之 后 加 入 资 料 A在 该 行 之 末 加 入 资 料 i(
46、insert)在 光 标 之 前 加 入 资 料 I在 该 行 之 首 加 入 资 料 o(open)新 增 一 行 于 该 行 之 下,供 输 入 资 料 用 0新 增 一 行 于 该 行 之 上,供 输 入 资 料 用 Dd删 除 当 前 光 标 所 在 行 X删 除 当 前 光 标 字 符 X删 除 当 前 光 标 之 前 字 符 U撤 消 重 做Fs查 找 替 换,例 如:将 文 件 中 的 所 有 FOX换 成 duck”,用:%s/FOX/duck/g/zESC 离 开 输 入 模 式 更 多 用 法 见 info vi三、GNU C 编 译 器 LINUX上 可 用 的 C 编
47、译 器 是 GNU C 编 译 器,它 建 立 在 自 由 软 件 基 金 会 编 程 许 可 证 的 基 础 上,因 此 可 以 自 由 发 布。LINUX上 的 GNU C 编 译 器(G C C)是 一 个 全 功 能 的 ANCI C 兼 容 编 译 器,而 一 般 UNIX(如 SCO U N IX)用 的 编 译 器 是 CC。下 面 介 绍 GCC和 一 些 GCC编 译 器 最 常 用 的 选 项。1、使 用 GCC通 常 后 跟 一 些 选 项 和 文 件 名 来 使 用 GCC编 译 器。GCC命 令 的 基 本 用 法 如 下:gcc options filenames命
48、 令 行 选 项 指 定 的 编 译 过 程 中 的 具 体 操 作 2、GCC常 用 选 项 GCC有 超 过 100个 的 编 译 选 项 可 用,这 些 选 项 中 的 许 多 可 能 永 远 都 不 会 用 到,但 一 些 主 要 的 选 项 将 会 频 繁 使 用。很 多 的 GCC选 项 包 括 一 个 以 上 的 字 符,因 此 必 须 为 每 个 选 项 指 定 各 自 的 连 字 符,并 且 就 像 大 多 数 LINUX命 令 一 样 不 能 在 个 单 独 的 连 字 符 后 跟 一 组 选 项。例 如,下 面 的 命 令 是 不 同 的:gcc-p-g test.cgc
49、c-pg test.c第 一 条 命 令 告 诉 GCC编 译 test.c时 为 prof命 令 建 立 剖 析(profile)信 息 并 且 把 调 试 信 息 加 入 到 可 执 行 文 件 里。第 二 条 命 令 告 诉 GCC只 为 gprof命 令 建 立 剖 析 信 息。当 不 用 任 何 选 项 编 译 一 个 程 序 时,G C C将 建 立(假 定 编 译 成 功)一 个 名 为 a.out的 可 执 行 文 件。例 如,gcc test.c编 译 成 功 后,当 前 目 录 下 就 产 生 了 一 个 a.out文 件。也 可 用-o选 项 来 为 即 将 产 生 的
50、可 执 行 文 件 指 定 一 个 文 件 名 来 代 替 a.outo例 如:gcc-o count count.c此 时 得 到 的 可 执 行 文 件 就 不 再 是 a.o u t,而 是 countoGCC也 可 以 指 定 编 译 器 处 理 步 骤 多 少。-c选 项 告 诉 GCC仅 把 源 代 码 编 译 为 目 标 代 码 而 跳 过 汇 编 和 连 接 步 骤。这 个 选 项 使 用 得 非 常 频 繁 因 为 它 编 译 多 个 C 程 序 时 速 度 更 快 且 更 易 于 管 理。默 认 时 G C C建 立 的 目 标 代 码 文 件 有 一 个.。的 扩 展 名