《1-Linux文件系统与进程.ppt》由会员分享,可在线阅读,更多相关《1-Linux文件系统与进程.ppt(36页珍藏版)》请在三一文库上搜索。
1、Linux文件系统与进程,Linux系统介绍 Linux系统产品 RedHat,Debian,Ubuntu, Novell/SuSE Red Hat Enterprise Linux 3 操作方法: 图形人机交互方式 命令行方式 Linux文件系统 EXT2分区 目录结构 文件访问 编程I/O操作 进程 进程标识 进程控制,Linux系统介绍 -Linux系统产品,嵌入式Linux: uCLinux,Android系统,Linux系统介绍 -操作方法,图形人机交互方式,没有磁盘区 采用目录管理,命令行方式,Linux文件系统与进程,Linux系统介绍 Linux系统产品 RedHat,Debi
2、an,Ubuntu, Novell/SuSE Red Hat Enterprise Linux 3 操作方法: 图形人机交互方式 命令行方式 Linux文件系统 EXT分区 目录结构 文件访问 编程I/O操作 进程 进程标识 进程控制,Linux文件系统 ext分区,Linux分区格式 ext分区:ext2、ext3、ext4 通过加载windows磁盘,可访问windows分区 其它 jfs, xfs等 分区工具 fdisk Windows分区格式 FAT16、FAT32、NTFS,Linux文件系统 目录结构,特殊目录 根目录 用符号“/”表示 当前目录用符号“.”表示 上一级目录用符号“
3、”表示 重要的目录,bin 存放二进制可执行文件(ls,cat,mkdir等) boot 存放用于系统引导时使用的各种文件 dev 用于存放设备文件 etc 存放系统配置文件 home 存放所有用户文件的根目录 lib 存放跟文件系统中的程序运行所需要的共享库及内核模块 mnt 系统管理员安装临时文件系统的安装点 opt 额外安装的可选应用程序包所放置的位置 proc 虚拟文件系统,存放当前内存的映射 root 超级用户目录 sbin 存放二进制可执行文件,只有root才能访问 tmp 用于存放各种临时文件 usr 用于存放系统应用程序,比较重要的目录/usr/local 本地管理员软件安装目
4、录 var 用于存放运行时需要改变数据的文件,Linux文件系统 文件访问命令,ls 目录 : 列出目录下的文件和子目录 ls 列出当前目录下的文件和子目录 ls a 列出包括隐藏的文件在内 ls l 以列表形式列出 cd 目录 : 改变当前目录 cd 返回上一级目录 cp 文件1 文件2 : 把文件1拷贝成文件2 cp r 目录1 目录2 : 把目录1下的内容拷贝到目录2下,包括子目录 find /目录 name filename : 在目录下寻找名字为filename的文件 pwd命令 : 显示当前所在的路径和目录,Linux文件系统 文件访问命令(续),mkdir 目录名 : 创建一个目
5、录 rmdir 目录 : 删除目录 mv 文件1, 文件2 : 把文件1命名为文件2 rm 文件 :删除文件 man 命令 :查看命令的帮助文件 vi命令 : 编辑文件 chmod命令 : 修改权限 用户管理命令useradd groupadd userdel groupdel su mount: 装载设备,Linux文件系统 文件I/O,文件描述符 一个非负整数 进程通过文件描述符来访问文件 打开或创建一个文件,第一个参数pathname是要打开(或要创建)的文件名或含路径的文件名 第二个参数flags是标志打开的方式,这个参数用来说明这个系统调用的多个选择项: O_RDONLY:表示请求以
6、只读方式打开文件。 O-WRONLY:表示请求以只写的方式打开文件。 O_RDWR: 表示以可读写的方式打开文件。,Linux文件系统 文件I/O (续),常用的几个选项: O_APPEND:文件以追加的方式打开。 O_CREAT:如果这个文件不存在,就将建立该文件。 O_NONBLOCK:非阻塞方式打开 O_SYNC:文件以同步I/O的方式打开 mode值 访问权限 创建文件时使用,阻塞与非阻塞的概念,Linux文件系统 文件I/O (续),定义 r :具有读取内容的权限; w:具有新增、修改文件内容的权限; x:具有执行文件的权限。 举例 -rwx-:0700, 文件所有者对文件具有读取、
7、写入和执行的权限。(八进制) -rwxr-r-:0744, 文件所有者具有读、写与执行的权限,其他用户则具有读取的权限。,r,w,x,r,w,x,r,w,x,所有者权限,所有者同组用户的权限,其他用户权限,0,0/1,Linux文件系统 文件I/O (续),pathname和mode的含义跟open相同,Linux文件系统 文件I/O (续),从文件描述符所指的文件中读取nbytes个字节到buff所指向的内存缓冲中。如果nbytes参数为0,该系统调用返回0并且没有其他结果。 当read系统调用成功时,该调用的返回值是读取的字节数,返回0表示文件指针在文件尾部。成功读取一定字符数返回时,文件
8、指针也向后移动一定的字符数。,Linux文件系统 文件I/O (续),write把buf所指内存中的nbyes个字节写入文件描述符所指的文件 调用返回情况 调用成功时,write返回写入的字节数(为0表示没有数据要写)。 当发生错误时,返回-1,并将errno置为相应的错误代码。 如果write调用的参数nbyes为0且文件描述指向一个正规文件,则调用将返回0且没有其他任何实际影响。,Linux文件系统 文件I/O (续),close调用成功时,返回值为0;否则,返回-1,表示调用出错。,Linux文件系统 文件I/O (续),举例 创建一个名为hole的文件 写入”abcdefghij” 文
9、件仅对所有者具有读取、写入和执行的权限,Linux文件系统 文件I/O (续),char buf1=“abcdefghij“; void err_sys(const char* info) printf(“%s n”,info); exit(1); int main(void) int fd; if (fd= creat (“hole“,0700)0) err_sys(“create error“); if ( write (fd,buf1,10)!=10) err_sys(“buf1 write error“); close(fd); return 0; ,Linux文件系统与进程,Linu
10、x系统介绍 实验采用:Red Hat Enterprise Linux 3 操作方法: 图形人机交互方式 命令行方式 Linux文件系统 EXT2分区 目录结构 文件访问 编程I/O操作 进程 进程标识 进程控制,进程 基本概念,程序与进程 程序 存放在磁盘文件中的可执行文件,是静态的。 进程 程序一旦装入内存,而且和它的运行环境结合在一起,它就称为进程,是动态的。 生命周期:装入内存到退出内存中止。 分配了资源:CPU资源、内存资源、I/O资源等。,Linux下的进程 进程标识号,进程标识号 系统给每个进程定义了一个标识该进程的非负整数,称作进程标识符。 每个程序执行起来后,有一个主进程。
11、当某一进程终止后,其标识符可以重新用作另一进程的标识符。不过,一个标识符所代表的进程在任何时刻都是惟一的。 系统把0和1保留给系统购两个重要进程。 0进程是调度进程,它按原则把处理机分配给进程使用。 进程1是初始化进程,它是程序/sbin的执行。进程1是系统所有其他进程的祖先,并且是进程结构的最终控制者。 系统根据进程标识号来管理进程,Linux下的进程 进程标识号 (续),Linux下的进程 进程控制:创建,父进程、子进程 /Linux独有的cow优化技术 调用成功时 对父进程返回子进程的PID, 对子进程返回0。 调用失败时,给父进程返回-1, 没有子进程创建。 进程共享代码空间,但是数据
12、空间是互相独立的,子进程数据空间中的内容是父进程的完整拷贝,Linux下的进程 进程控制:同步,调用wait的进程进入睡眠状态直到它的一个子进程退出时或收到一个不能被忽略的信号时被唤醒。如果调用发出时,已经有退出的子进程(这时子进程的状态是僵死状态),该调用立即返回。其中调用返回时参数status中包含子进程退出时的状态信息(正常退出还是被非正常结束的;正常结束时的返回值,或被哪一个信号结束等信息)。 waitid与wait函数在调用时的区别是waitid等待由参数pid指定的子进程退出。 参数options的取值及其含义如下: WNOHANG:该选项要求如果没有子进程退出就立即返回。 WUN
13、TRACED:对已经停止但本不用报告状态的子进程,该调用也从等待中返回和报告状态。,Linux下的进程 进程控制:举例 (续),除了使用exit函数来终止进程外,当进程运行完、程序到达main函数末时,进程会自动终止。当进程在main函数内执行return语句也会终止。 _exit函数只是简单的退出调用函数,而不会关闭文件,清空缓冲区,Linux下的进程 进程控制:举例,extern int errno; /extern表示全局变量,包括从其他库引用函数或变量时需加上 int main(void) char buf100; pid_t cld_pid; /声明进程号 int fd; int s
14、tatus; if(fd= open (“temp“,O_CREAT|O_RDWR)=-1) printf(“open error %dn“,errno); exit(1); ,Linux下的进程 进程控制:举例 (续),strcpy(buf,“this is parent process write n“); / char *strcpy(char* dest, const char *src); if ( (cld_pid= fork() )=0)/子进程,复制代码构成子进程 strcpy(buf,“this is child process write n“); printf(“this
15、 is child process n“); printf(“My PID(child) is %dn“,getpid (); printf(“My parent PID is %dn“,getppid (); write(fd,buf,strlen(buf); close(fd); exit(0); else,Linux下的进程 进程控制:举例 (续),else printf(“this is parent process n“); printf(“my PID(parent) id %dn“, getpid (); printf(“my child PID is %dn“,cld_pid ); close(fd); wait(,两个进程,哪个先执行? 本例中,哪个先打印?,作业,请在Linux系统下新建文件“input.txt”,输入字符“a b c d e”; 编写一个C语言程序: 主进程创建两个子进程 一个子进程向上述“input.txt”追加写入10个字符; 另外一个子进程从上述“input.txt”读出前10个字符,并显示在终端屏幕。 编译调试上述C语言程序(第一次实验课给老师演示),
链接地址:https://www.31doc.com/p-3075350.html