资源预览内容
第1页 / 共36页
第2页 / 共36页
第3页 / 共36页
第4页 / 共36页
第5页 / 共36页
第6页 / 共36页
第7页 / 共36页
第8页 / 共36页
第9页 / 共36页
第10页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Linux文件系统与进程文件系统与进程lLinux系统介绍lLinux系统产品lRedHat,Debian,Ubuntu,Novell/SuSElRedHatEnterpriseLinux3l操作方法:l图形人机交互方式l命令行方式lLinux文件系统lEXT2分区l目录结构l文件访问l编程I/O操作l进程l进程标识l进程控制Linux系统介绍系统介绍-Linux系统产品系统产品嵌入式Linux:uCLinuxAndroid系统Linux系统介绍系统介绍-操作方法操作方法图形人机交互方式图形人机交互方式没有磁盘区没有磁盘区采用目录管理采用目录管理命令行方式命令行方式Linux文件系统与进程文件系统与进程lLinux系统介绍lLinux系统产品lRedHat,Debian,Ubuntu,Novell/SuSElRedHatEnterpriseLinux3l操作方法:l图形人机交互方式l命令行方式lLinux文件系统lEXT分区l目录结构l文件访问l编程I/O操作l进程l进程标识l进程控制Linux文件系统文件系统ext分区分区lLinux分区格式lext分区:ext2、ext3、ext4l通过加载windows磁盘,可访问windows分区l其它ljfs,xfs等l分区工具lfdisklWindows分区格式lFAT16、FAT32、NTFSLinux文件系统文件系统目录结构目录结构l特殊目录l根目录用符号“/”表示l当前目录用符号“.”表示l上一级目录用符号“.”表示l重要的目录lbin存放二进制可执行文件(ls,cat,mkdir等)lboot存放用于系统引导时使用的各种文件ldev用于存放设备文件letc存放系统配置文件lhome存放所有用户文件的根目录llib存放跟文件系统中的程序运行所需要的共享库及内核模块lmnt系统管理员安装临时文件系统的安装点lopt额外安装的可选应用程序包所放置的位置lproc虚拟文件系统,存放当前内存的映射lroot超级用户目录lsbin存放二进制可执行文件,只有root才能访问ltmp用于存放各种临时文件lusr用于存放系统应用程序,比较重要的目录/usr/local本地管理员软件安装目录lvar用于存放运行时需要改变数据的文件Linux文件系统文件系统文件访问命令文件访问命令lls目录:列出目录下的文件和子目录lls列出当前目录下的文件和子目录llsa列出包括隐藏的文件在内llsl以列表形式列出lcd目录:改变当前目录lcd.返回上一级目录lcp文件1文件2:把文件1拷贝成文件2lcpr目录1目录2:把目录1下的内容拷贝到目录2下,包括子目录lfind/目录namefilename:在目录下寻找名字为filename的文件lpwd命令:显示当前所在的路径和目录Linux文件系统文件系统文件访问命令(续)文件访问命令(续)lmkdir目录名:创建一个目录lrmdir目录:删除目录lmv文件1,文件2:把文件1命名为文件2lrm文件:删除文件lman命令:查看命令的帮助文件lvi命令:编辑文件lchmod命令:修改权限l用户管理命令useraddgroupadduserdelgroupdelsulmount:装载设备Linux文件系统文件系统文件文件I/Ol文件描述符l一个非负整数l进程通过文件描述符来访问文件l打开或创建一个文件l第一个参数pathname是要打开(或要创建)的文件名或含路径的文件名l第二个参数flags是标志打开的方式,这个参数用来说明这个系统调用的多个选择项:lO_RDONLY:表示请求以只读方式打开文件。lO-WRONLY:表示请求以只写的方式打开文件。lO_RDWR:表示以可读写的方式打开文件。Linux文件系统文件系统文件文件I/O (续)(续)l常用的几个选项:lO_APPEND:文件以追加的方式打开。lO_CREAT:如果这个文件不存在,就将建立该文件。lO_NONBLOCK:非阻塞方式打开lO_SYNC:文件以同步I/O的方式打开lmode值l访问权限l创建文件时使用阻塞与非阻塞的概念阻塞与非阻塞的概念Linux文件系统文件系统文件文件I/O (续)(续)l定义lr:具有读取内容的权限;lw:具有新增、修改文件内容的权限;lx:具有执行文件的权限。l举例l-rwx-:0700,文件所有者对文件具有读取、写入和执行的权限。(八进制)l-rwxr-r-:0744,文件所有者具有读、写与执行的权限,其他用户则具有读取的权限。rwxrwxrwx所有者权限所有者同组用户的权限其他用户权限00/1Linux文件系统文件系统文件文件I/O (续)(续)lpathname和mode的含义跟open相同Linux文件系统文件系统文件文件I/O (续)(续)l从文件描述符所指的文件中读取nbytes个字节到buff所指向的内存缓冲中。如果nbytes参数为0,该系统调用返回0并且没有其他结果。l当read系统调用成功时,该调用的返回值是读取的字节数,返回0表示文件指针在文件尾部。成功读取一定字符数返回时,文件指针也向后移动一定的字符数。Linux文件系统文件系统文件文件I/O (续)(续)lwrite把buf所指内存中的nbyes个字节写入文件描述符所指的文件l调用返回情况l调用成功时,write返回写入的字节数(为0表示没有数据要写)。l当发生错误时,返回-1,并将errno置为相应的错误代码。l如果write调用的参数nbyes为0且文件描述指向一个正规文件,则调用将返回0且没有其他任何实际影响。Linux文件系统文件系统文件文件I/O (续)(续)lclose调用成功时,返回值为0;否则,返回-1,表示调用出错。Linux文件系统文件系统文件文件I/O (续)(续)l举例l创建一个名为hole的文件l写入”abcdefghij”l文件仅对所有者具有读取、写入和执行的权限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文件系统与进程文件系统与进程lLinux系统介绍l实验采用:RedHatEnterpriseLinux3l操作方法:l图形人机交互方式l命令行方式lLinux文件系统lEXT2分区l目录结构l文件访问l编程I/O操作l进程l进程标识l进程控制进程进程基本概念基本概念l程序与进程l程序l存放在磁盘文件中的可执行文件,是静态的。l进程l程序一旦装入内存,而且和它的运行环境结合在一起,它就称为进程,是动态的。l生命周期:装入内存到退出内存中止。l分配了资源:CPU资源、内存资源、I/O资源等。Linux下的进程下的进程进程标识号进程标识号l进程标识号l系统给每个进程定义了一个标识该进程的非负整数,称作进程标识符。l每个程序执行起来后,有一个主进程。l当某一进程终止后,其标识符可以重新用作另一进程的标识符。不过,一个标识符所代表的进程在任何时刻都是惟一的。l系统把0和1保留给系统购两个重要进程。l0进程是调度进程,它按原则把处理机分配给进程使用。l进程1是初始化进程,它是程序/sbin的执行。进程1是系统所有其他进程的祖先,并且是进程结构的最终控制者。l系统根据进程标识号来管理进程Linux下的进程下的进程进程标识号进程标识号 (续)(续)Linux下的进程下的进程进程控制:创建进程控制:创建l父进程、子进程/Linux独有的cow优化技术l调用成功时l对父进程返回子进程的PID,l对子进程返回0。l调用失败时,给父进程返回-1,没有子进程创建。l进程共享代码空间,但是数据空间是互相独立的,子进程数据空间中的内容是父进程的完整拷贝Linux下的进程下的进程进程控制:同步进程控制:同步l调用wait的进程进入睡眠状态直到它的一个子进程退出时或收到一个不能被忽略的信号时被唤醒。如果调用发出时,已经有退出的子进程(这时子进程的状态是僵死状态),该调用立即返回。其中调用返回时参数status中包含子进程退出时的状态信息(正常退出还是被非正常结束的;正常结束时的返回值,或被哪一个信号结束等信息)。lwaitid与wait函数在调用时的区别是waitid等待由参数pid指定的子进程退出。l参数options的取值及其含义如下:lWNOHANG:该选项要求如果没有子进程退出就立即返回。lWUNTRACED:对已经停止但本不用报告状态的子进程,该调用也从等待中返回和报告状态。Linux下的进程下的进程进程控制:举例进程控制:举例 (续)(续)l除了使用exit函数来终止进程外,当进程运行完、程序到达main函数末时,进程会自动终止。当进程在main函数内执行return语句也会终止。l_exit函数只是简单的退出调用函数,而不会关闭文件,清空缓冲区Linux下的进程下的进程进程控制:举例进程控制:举例extern int errno;/extern表示全局变量,表示全局变量,包括从其他库引用函数或变量时需加上包括从其他库引用函数或变量时需加上int main(void) char buf100;pid_t cld_pid; /声明进程号声明进程号int fd;int status;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,constchar*src);if ( (cld_pid= fork() )=0)/子进程,复制代码构成子进程子进程,复制代码构成子进程strcpy(buf,this is child process write n);printf(this 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(&status); /与子进程同步与子进程同步return 0;两个进程,哪个先执行?两个进程,哪个先执行?本例中,哪个先打印?本例中,哪个先打印?作业作业l请在Linux系统下新建文件“input.txt”,输入字符“abcde”;l编写一个C语言程序:l主进程创建两个子进程l一个子进程向上述“input.txt”追加写入10个字符;l另外一个子进程从上述“input.txt”读出前10个字符,并显示在终端屏幕。l编译调试上述C语言程序(第一次实验课给老师演示)
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号