《linux软件工程师(C语言)实用教程》第4章..


16
4.2.2 文件的打开和关闭
例4.6:设计一个程序,要求在“/home”下以可 读写方式打开一个名为“4-6file”的文件,如果 该文件不存在,则创建此文件,如果存在,将 文件清空后关闭。 源程序代码:
17
4.2.2 文件的打开和关闭
open函数说明
18
4.2.2 文件的打开和关闭
4
4.1.1 Linux文件类型
Linux系统的主要文件类型:
5
4.1.2 Linux文件权限
对于Linux系统中的文件来说,它的权限可以分为4种:可读取 (Readable)、可写入(Writable)、可执行(eXecute)和无 权限,分别用r、w、x和-表示。
Linux系统按文件所有者、文件所有者同组用户和其它用户 三类规定不同的文件访问权限。 显示的作为权限的10个字符,可分为四部分: 1. 第一位:一般表示文件类型。 2. 第二位到第四位(第一组rwx):表示文件所有者的访问权 限。 3. 第五位到第七位(第二组rwx):表示文件所有者同组用户 的访问权限。 4. 第八位到第十位(第三组rwx):表示其他用户的访问权限。
14
4.2.1 文件的创建
例4.5:设计一个程序,要求在“/home”目录下 创建一个名称为“4-5file”的文件,并且把此文 件的权限设置为所有者具有只读权限,最后显 示此文件的信息。 源程序代码 :
15
4.2.1 文件的创建
creat函数说明
思考题:设计一个程序,要求在“/mnt”目录下创建一个 名称为“usb”的文件,编辑、调试成功后,运行两次是 否有问题?为什么?
注意:FHS标准定义了文件系统中每个区域的用途和所需 要的最小构成的文件和目录。
3
4.1.1 Linux文件类型
Linux下最常见的文件类型有5种:普通文件、目 录文件、链接文件、管道文件和设备文件。 例4.1:设计一个程序,要求列出当前目录下的 文件信息,以及系统“/dev/sda1”和“/dev/lp0” 的文件信息。 编辑源程序代码 :
13
4.2 不带缓存的文件I/O操作
Linux系统中,基于文件描述符的文件操作主要 有:不带缓存的文件I/O操作和带缓存的文件流 I/O操作。 不带缓存的文件I/O操作,又称系统调用I/O操作, 符合POSIX标准,设计的程序能在兼容POSIX 标准的系统间方便地移植。
不带缓存的文件I/O操作用到的主要函数:
20
4.2.3 文件的读写操作
Read、write函数说明
6
4.1.2 Linux文件权限
例4.2:设计一个程序,要求把系统中“/etc”目 录下的passwd文件权限,设置成文件所有者可 读可写,所有其他用户为只读权限。 源程序代码: 编译、运行后,使用ls –l命令查看 “/etc/passwd”文件的权限
[root@localhost root]#ls -l /etc/passwd
7ቤተ መጻሕፍቲ ባይዱ
4.1.2 Linux文件权限
例4.3:设计一个程序,要求设置系统文件与目 录的权限掩码。 源程序代码 :
8
注意:运行一次此例的程序后,修改源程序中 的掩码后,再次编译运行,文件“liu1”和 “liu2”的权限并不改变。因为如果文件已经存 在,touch只修改时间标记。如果要再次验证 新的掩码,需要再次运行程序前删除原来的文 件。
如果要获得文件的其他属性,可以使用stat函数 或者fstat函数。 stat函数用来判断没有打开的文件,而fstat函数 用来判断打开的文件。使用较多的属性是 st_mode,通过此属性可以判断给定的文件是一 个普通文件还是其他文件类型。
11
4.1.3 Linux文件的其他属性
例4.4:设计一个程序,应用系统函数stat获取 系统中“/etc”目录下的passwd文件的大小。 源程序代码:
close函数说明
思考题:设计一个程序,要求在“/mnt”目录下,打开名 称为“usb”的文件,如果该文件不存在,则创建此文件, 如果存在,将文件清空后关闭。
19
4.2.3 文件的读写操作
文件读写操作中,经常用到的函数是read、 write和lseek。 例4.7:设计一个C程序,完成文件的复制工作。 要求通过使用read函数和write函数复制 “/etc/passwd”文件到“4-7test”文件中,文件 名当程序运行时从键盘键入。 源程序代码 :
12
4.1.3 Linux文件的其他属性
stat函数说明
思考题: 1. 设计一个程序,要求判断“/etc/passwd”的文件类型。 使用st_mode属性,可以使用几个宏来判断: S_ISLNK(st_mode) 是否是一个连接,S_ISREG是否是 一个常规文件S_ISDIR是否是一个目录,S_ISCHR是否是 一个字符设备,S_ISBLK是否是一个块设备,S_ISFIFO 是否 是一个FIFO文件,S_ISSOCK是否是一个SOCKET 文件。 2. 设计一个程序,要求打开文件“/etc/passwd”, 判断它 的最后一次访问时间。
4.1.2 Linux文件权限
chmod函数说明
mode参数说明
9
4.1.2 Linux文件权限
umask函数说明
思考题:设计一个程序,要求Linux系统新建的文件权限 是0400。
10
4.1.3 Linux文件的其他属性
文件还有创建时间,大小等其他的属性。 在Linux系统中,定义了stat结构体来存放这些信息。
第4章
文件的操作
本章重点
Linux系统的文件属性 不带缓存的文件I/O操作 基于流的文件I/O操作 特殊文件的操作
2
4.1 Linux系统文件的属性
Linux系统中,文件的准确定义是不包含有任何其 他结构的字符流。 Linux系统提供的文件系统,是树形层次结构系统。 Linux支持多种文件系统,最常用的文件系统是 ext2系统。 Linux系统的文件属性主要包括文件类型和文件权 限两个方面。
合集下载

《Linux操作系统实用教程》教学课件第四章

《Linux操作系统实用教程》教学课件第四章

4.1 Linux文件系统概述
4.1.2 Linux文件系统 4.1.2 Linux文件系统
和Windows操作系统类似,所有Linux的数据都是由文件系统 按照树型目录结构管理的。而且Linux操作系统同样要区分 文件的类型,判断文件的存取属性和可执行属性。下面将介 绍Linux的文件系统结构以及Linux文件系统的建立、挂载 与管理等相关知识。 1.Linux的文件系统结构 在Windows操作系统中,主分区与逻辑分区被称为驱动器,会 被分配一个驱动器盘符(如C盘、D盘、E盘),每个驱动器 都有自己的根目录结构,这样形成了多个树并列的情形,如 图所示。
mkfs常用参数及含义 参 数 含 义
-V
-t fs_type -c
输出完整信息
指定创建的文件系统类型,默认的是ext2 检查磁盘是否存在坏道
-l f_name
从文件f_name中读初始化的坏块表
4.1 Linux文件系统概述
4.1.2 Linux文件系统
例4.2 在分区/dev/sda3上建立ext3文件系统。 在终端提示符下输入如下命令:
Windows文件系统结构
4.1 Linux文件系统概述
4.1.2 Linux文件系统
与Windows相类似,Linux也采用了树状结构的文件系统,它 由目录和目录下的文件一起构成。但Linux文件系统不使用 驱动器这个概念,而是使用单一的根目录结构,所有的分区 都挂载到单一的“/”目录上,其结构示意图如图所示。 其中,“/”目录也称为 根目录,位于Linux文 件系统目录结构的顶层, 必须使用ext文件系统。 如果还有其它分区,必 须挂载到“/”目录下某 个位置。
Linux文件系统结构
4.1 Linux文件系统概述

Linux C(刘学勇 编著)各章习题答案

Linux C(刘学勇 编著)各章习题答案
fprintf(fp, "%d",pid);
return 0;
}
三、上机题
1、
#include <stdio.h>
main()
{
char a;
while(1)
{
scanf("%c",&a);
if(a=='q')
return ;
printf("%c", a);
}
}
2、
#include <stdio.h>
int main(int argc , char *argv[])
if(write(target_fd, iobuffer, num)!=num)
{
printf("Target file write error!\n");
return 4;
}
close(source_fd);
close(target_fd);
return 0;
}
2、
#include <sys/types.h>
{
printf("Target file open error!\n");
return 3;
}
while((num=read(source_fd, iobuffer, BUFSIZE))>0)
{
for(i=0;i<num;i++)
{
if(iobuffer[i]>='a' &&iobuffer[i]<='z')
_exit(0);
}

《Linux系统应用与开发教程》所有课后习题和答案

《Linux系统应用与开发教程》所有课后习题和答案

《Linux‎系统应用与‎开发教程》所有课后习‎题和答案第1章 Linux‎概述 (1)第2章 shell‎及常用命令‎ (4)第3章 vi编辑器‎的使用 (7)第4章 X Windo‎w系统的使‎用 (9)第5章 Linux‎系统的常用‎软件 (11)第6章硬件管理 (11)第7章网络基本配‎置 (12)第8章常用网络服‎务的配置和‎使用 (15)第9章系统管理与‎监控 (19)第10章 Linux‎系统的安全‎管理 (21)第11章shell‎程序设计 (24)第12章gcc的使‎用与开发 (26)第13章gtk+图形界面程‎序设计 (27)第14章Qt图形界‎面程序设计‎ (28)第15章集成开发环‎境KDev‎e lop的‎使用 (31)第1章 Linux‎概述1.什么是Li‎n ux?Linux‎是一套免费‎使用和自由‎传播的类U‎N IX操作‎系统,源代码开放‎,能运行于各‎类硬件平台‎,包括Int‎e l x86系列‎和RISC‎处理器。

这个系统是‎由世界各地‎成千上万的‎程序员设计‎和实现的。

其目的是建‎立不受任何‎商品化软件‎的版权制约‎的、全世界都能‎自由使用的‎U NIX兼‎容产品。

2. Linux‎有哪些特性‎?(1)开放性(2)多用户(3)多任务(4)良好的用户‎界面(5)设备独立性‎(6)丰富的网络‎功能(7)可靠的系统‎安全(8)良好的可移‎植性3. Linux‎与Wind‎o ws操作‎系统的主要‎区别是什么‎?(1)从发展的背‎景看,Linux‎是从一个比‎较成熟的操‎作系统发展‎而来的,而其他操作‎系统,如Wind‎o ws等,都是自成体‎系,无对应的相‎依托的操作‎系统(2)从使用费用‎上看,Linux‎是一种开放‎、免费的操作‎系统,Windo‎w s是封闭‎的系统,需要有偿使‎用。

(3)Linux‎上丰富的应‎用软件也是‎自由的,而在Win‎d ows下‎,几乎所有的‎软件都有独‎立的版权,需要购买使‎用,即使某些软‎件可以免费‎使用,也一般不提‎供其源代码‎,更不用说由‎用户修改扩‎充其功能了‎。

Linux操作系统第4章

Linux操作系统第4章

编译,使用libcurses.so库: gcc -o hello3 hello3.c print.c -lcurses 运行:$ ./hello3
使用man命令
使用man命令也可以查询c库函数和系统调用 的手册页。 格式: man [选项] 名称 选项: -S1:shell命令 -S2:系统调用 -S3:c库函数 例:man exit 显示exit命令的手册页 man -S2 exit 显示exit系统调用的手册页 man -S3 exit 显示exit函数的手册页
代码优化选项
使用优化选项可以使gcc在耗费更多编译时 间和牺牲易调试性的基础上,产生更小更 快的目标代码。通常用于生成最终产品。 典型的选项是: -O:对源代码进行基本优化。这些优化 在大多数情况下都会使程序执行的更快。 -O2:产生尽可能小和尽可能快的代码。 编译时间比-O长。
调试和剖析选项
gcc命令
gcc命令的格式如下: gcc [选项] 文件 选项: -E:预编译,输出预编译过的源代码。 -S:编译,产生汇编文件,不汇编。 -c:编译或汇编,产生目标文件,不连接。 -o 文件名:指定生成的可执行文件的文件 名。无此选项时,生成a.out文件。
头文件目录选项
C程序中的头文件有两种写法: #include <***.h> 表示系统头文件,gcc将在 系统默认的头文件目录(/usr/include)中搜寻。 #include "***.h" 表示用户自定义的头文件, gcc将在当前目录中搜寻。 如果所需的头文件放在其它目录中,就需要 使用-I选项指示gcc增加搜索路径: -Idirname:将dirname目录加入到头文件搜 索目录列表中。
gcc编译过程
gcc编译的全过程可分为四个阶段:

第4章 Linux 下C 编程基础

第4章  Linux 下C 编程基础
Page 24 2013-8-12
4.2 Vim编辑器
^命令:^命令可以将光标移动到当前行的第 一个非空白字符上。该命令前面加上数字没有 任何效果。 :命令::加上具体的行号,光标会移动到指 定的行。 j命令:使用j命令可以向下跳转若干行。 在前面加上数字,可以跳转出相应的行数。 G命令:G命令把光标定位到指定的行上。 在前加上数字,可以跳转相应的行数。如 “10G”表示把光标定位到10行。如果没有指定 命令数字,则会把光标定位到最后一行。
Page 1 2013-8-12
第4章 嵌入式系统基础知识
4.1
Vi编辑器
4.2
Vim编辑器
4.3
GCC编译器
4.4
GDB调试器
Page 2
2013-8-12
第1章 嵌入式系统基础知识
4.5
Make工程管理器
4.6
本章小结
4.7
思考与练习
Page 3
2013-8-12
4.1 vi编辑器
Vi(Visual Interface)是Linux系统的第一 个全屏幕交互式编辑工具,它从诞生至今一直 得到广大用户的青睐,历经数十年后仍然是人 们主要使用的文本编辑工具。文本编辑器是所 有计算机系统中最常使用的一种工具。 Vi可以执行输出、删除、查找、替换等文 本操作,而且用户可以根据自己的需要对其进 行定制,这是其它文本编辑程序所不具有的优 势。
2013-8-12
4.2 Vim编辑器
4、页滚动
Vim可以实现所显示页面的向上向下滚 动,相当于图形界面中的拖曳滚动条。常用 的页滚动命令如下所示。 Ctrl+u命令:该命令可使文本向上滚动 半屏。 Ctrl+d命令:该命令将文本向下移动半 屏。 Ctrl+e命令:一次向上滚动一行。 Ctrl+y命令:一次向下滚动一行。

Linux-4

Linux-4

Linux
8
目录
目录本质上用于文件的层级结构,在不同的操作系统中, 目录本质上用于文件的层级结构,在不同的操作系统中, 目录的表现形式有所不同,例如, Windows系统中 系统中, 目录的表现形式有所不同,例如,在Windows系统中,使用 文件夹的形式来表示目录 在Linux系统下,使用inode来表示目录,inode不仅适用于 Linux系统下,使用inode来表示目录,inode不仅适用于 系统下 inode来表示目录 目录的表示,也适用于其他文件类型的表示, 目录的表示,也适用于其他文件类型的表示,当文件被创 建的时候,Linux内核将为文件分配一个唯一的inode号 内核将为文件分配一个唯一的inode 建的时候,Linux内核将为文件分配一个唯一的inode号, inode号中记录了文件的大小及存储位置等属性信息 inode号中记录了文件的大小及存储位置等属性信息
Linux
3
pico编辑器 pico编辑器
pico编辑器是一款简洁的文本编辑器,用于编辑短小的文 pico编辑器是一款简洁的文本编辑器, 编辑器是一款简洁的文本编辑器 件 pico的操作流程在课本41页已经详细列出, pico的操作流程在课本41页已经详细列出,参见课堂演示 的操作流程在课本41页已经详细列出
Linux 13
/var:登入、各类服务发生问题时的记录,以及常规性服 /var:登入、各类服务发生问题时的记录, 务记录都存放在这里 /dev: /dev:存放与设备有关的文件 /media: /media:光驱与软驱等默认挂载点的目录 /lib: /lib:各种编程语言库 /lost+found:所有和其他目录没有关联的文件, /lost+found:所有和其他目录没有关联的文件,这些文件 或许是无效的,通过fsck fsck命令可以检查文件系统以决定是 或许是无效的,通过fsck命令可以检查文件系统以决定是 否保留这些文件 /mnt: /mnt:挂载文件系统或存储设备

linux系统程序设计教程

linux系统程序设计教程linux系统程序设计教程第⼀章:⽣成⼀个Process(进程)进程是什么?简单地说,进程就是在执⾏状态下的⼀个程序(包括CPU状态,所占内存的状态,等等)A进程⽣成了B进程,也就是说,A程序在执⾏的时候,⼜⽣成了另⼀个进程B。

这个时候,我们可以把A进程叫做⽗进程,把B进程叫做⼦进程。

例程序:// Usage : ./a.out 20#includeint main( int argc , char *argv[]){int dep_time;dep_time = atoi( argv[1] )*60 ; //将参数中给出的20(分钟)转换成整型的秒数if( fork()==0 ) //⽣成⼦进程,然后⽗进程中⽌{sleep( dep_time );fprintf( stderr , \n);}return 0;}上⾯的程序是⼀个闹钟程序。

当你执⾏之后。

程序不会显⽰什么,⽽是⼀下就回到UNIX的提⽰符下。

但是你在命令⾏中指定了20分钟后你有事,那么在你执⾏这个程序之后20分钟,他会提醒你到时间了。

本程序只是做⽰例⽤,没有检查参数是否正确,等等。

⽣成⼀个新的进程,可以使⽤ fork() 函数。

以下说说fork()函数。

头⽂件: #include形式 pid_t fork();参数⽆返回值成功时:⽗进程中:⼦进程的PID (Process ID)⼦进程中:0失败时:⽗进程中:-1由于失败,没有⽣成⼦进程;fork()刚执⾏完的时候,⼦进程和⽗进程是完全⼀模⼀样的两份进程(当然,PID是不⼀样的)。

他们的各个变量的值都是⼀样的,⽽且都认为⾃⼰已经执⾏完fork()了。

fork()后,区分⽗进程和⼦进程,只要看fork()的返回值就⾏了。

if( fork()==0 ) printf(这是⼦进程);else printf(这是⽗进程);同理:if( fork()==0 ){//接下来要⼦进程做的⼯作}else{//接下来要⽗进程做的⼯作}⼀般,我们会把fork()返回给⽗进程的值保存下来(其实就是⼦进程的PID),等到需要结束⼦进程的时候,我们关掉他,如下:pid_t child_pid ;child_pid=fork();if( child_pid==0 ){// ... ...}else{// ... ...}// ... ...需要结束⼦进程的时候kill( child_pid , SIGKILL ) // kill()函数是⽤来发给另⼀个进程⼀个消息的。

Linux操作系统实用教程

提供了丰富的网络功能 可靠的系统安全性 良好的可移植性
Linux操作系统实用教程
Linux的特点
兼容其他Unix系统 同样遵循POSIX(Portable Operating
System for Unix)标准来开发,所以 Linux与现今的System V以及BSD等主流 Unix系统均可兼容,而原来Unix系统下可 以执行的程序,也几乎可以完全移植到 Linux上。 支持多种文件系统
《Linux操作系统实用教程》
Linux操作系统实用教程
第1章 Linux操作系统概述
1.1 自由软件简介 Linux是自由软件的代表,运行在该系统上 的应用程序几乎都是自由软件。
自由软件含义 自由软件相关词语
1.2 Linux操作系统概述
Linux的发展历史 Linux的内核版本与发行版本 Linux的特点
Turbo Linux
Linux操作系统实用教程
Linux的特点
开放性 多用户 多任务 良好的用户界面 设备独立性
把所有外部设备统一当作文件对待,只要 安装设备的驱动程序,任何用户都可以像使 用文件一样,操纵、使用这些设备,而不必 知道它们的具体存在形式。
Linux操作系统实用教程
Linux的特点
则每个用户需要则加4~6M的内存。
Linux操作系统实用教程
安装方式
按安装界面进行划分 (1) 字符界面安装 通过键盘操作进行,该方式安装速度快,适合所有
要安装的主机,并且条件具备时可进行网络环境下 通过服务器主机进行安装,如、HTTP等方式。 (2) 图形界面安装 通过鼠标操作进行安装,该方式安装速度相对于字 符界面要慢,但操作简单明了,更适合普通用户在 本地进行安装。
Linux操作系统实用教程
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档