linux知识点总结_第1页
linux知识点总结_第2页
linux知识点总结_第3页
linux知识点总结_第4页
linux知识点总结_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、七:file1. 叙述linux的文件系统框架,并解释其中各个部分。boot :启动相关的程序和配置bin :常用的Linux命令,这些命令通常为可执行文件或这些文件的链接sbin :通常为根用户准备的命令lib :系统常用库usr :用户安装的文件、库、开发库等root :根用户的用户文件home :普通用户的用户文件etc :系统或程序的配置文件var :系统中服务器数据、日志proc :系统状态信息dev :系统设备mnt、media :其他分区的挂载点(如Windows磁盘分区、光盘或软件等)tmp :临时文件lost+found 磁盘孤立扇区2. 叙述超级块、inode、dentey

2、和file四大数据结构的作用和主要内容。超级块:作用:代表了整个文件系统,记录了文件系统的整体信息内容:文件系统的状态、文件系统类型、块大小、区块数、索引节点数、脏标志、操作方法inode(索引节点)作用:代表了操作系统中的一个文件,无论该文件是否被打开,它都包含了文件操作的所有信息内容:文件大小,设备标识符,用户标识符,用户组标识符,文件模式,扩展属性,文件读取或修改的时间戳,链接数量,指向存储该内容的磁盘区块的指针,文件分类等等。dentey(目录项):作用:代表了一个目录,用来组成文件的路径,并利用其实现路径的管理内容:包括该目录对象对应的索引节点,子目录链表,父目录目录项对象,与它同级

3、的目录的目录项对象链表,使用计数,缓存标志file(文件):作用:代表了被进程打开的文件,是可以读写的实体内容:包括相应的目录项对象、使用计数、访问模式、当前偏移量、操作方法等3. 什么是文件描述符?它与fopen返回的文件指针有什么关系?文件描述符是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。关系:fopen返回的文件指针是文件描述符所指向的文件描述符表中的一个表项4. 分别叙述fopen和open的参数设置以及它们的区别。fopen参数:path是指定的文件的路径,mode是文件的打开模式,模式可以为r、r+、w、w+、a、a+open参数:pathname是欲打开文件

4、的路径,flags是一些标志位,mode是文件的操作权限。区别:(1)open返回一个文件描述符(int),fopen返回一个文件指针(FILE*)。(2)open无缓冲,fopen有缓冲。(3)open与 read, write 等配合使用, fopen与 fread, fwrite等配合使用。(4)fopen是在open的基础上扩充而来的,在大多数情况下,用fopen。5. 叙述pipe和mkfifo两种管道函数的区别。pipe创建匿名管道,mkfifo创建有名管道。pipe管道是进程通信的一种形式,mkfifo管道被看作是一个文件6. 使用匿名管道技术,编程实现“ls -1|wc -l”

5、。#include<sys/types.h>#include<sys/stat.h>#include<unistd.h>#include<fcntl.h>#include<stdio.h>#include<stdlib.h>#include<errno.h>#include<string.h>#include<signal.h>#define ERR_EXIT(m) do perror(m); exit(EXIT_FAILURE); while(0)int main(int argc,

6、char *argv) int pipefd2; if (pipe(pipefd) = -1) ERR_EXIT("pipe error"); pid_t pid; pid = fork(); if (pid = -1) ERR_EXIT("fork error"); if (pid = 0) dup2(pipefd1, STDOUT_FILENO); /输出重定向 close(pipefd1); close(pipefd0); execlp("ls", "ls", "-1", NULL); f

7、printf(stderr, "error execute lsn"); exit(EXIT_FAILURE); dup2(pipefd0, STDIN_FILENO); close(pipefd0); close(pipefd1); execlp("wc", "wc", "-1", NULL); fprintf(stderr, "error execute wcn"); exit(EXIT_FAILURE); return 0;7. 编写两个进程a和b,使用有名管道进行通信。a向b传送字符串“

8、hello”,b接收并打印。进程a:#include<stdlib.h>#include<stdio.h>#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include<errno.h>#define PATH "./fifo" #define SIZE 128 int main() umask(0); if (mkfifo (PATH,0666|S_IFIFO) = -1)/创建有名管道,mkfifo(管道文件名,管> 理权限

9、) /成功返回0 失败返回-1 perror ("mkefifo error"); exit(0); int fd = open (PATH,O_RDONLY); if (fd<0) printf("open fd is errorn"); return 0;进程b:#include<stdlib.h>#include<stdio.h>#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include<errno.h&

10、gt;#define PATH "./fifo" #define SIZE 128 int main()char BufSIZE;while(1)printf("please Enter#:");fflush(stdout); /清空缓冲区,并把缓冲区的内容输出ssize_t s = read(0,Buf,sizeof(Buf); /ssize_t 一个类型if (s<0) /read(文件标识符,数据缓冲区,读取数据尺寸) /失败或中断返回-1perror("read is failed");exit(1);else if(s

11、=0)printf("read is closed!");return 1;elseBufs= '0' /最后一位,字符串结束符write(fd,Buf,strlen(Buf); /write(文件表识符,数据缓冲区,写入文件尺寸)return 0; 7.编程以可读写方式打开第一个参数表示的二进制文件,改写里面第三个字节为0fH,再关闭它。八:mem1. 叙述进程的用户空间和内核空间都有哪些种类,列举各类内存申请函数并说明之。代码区、静态数据变量、堆区、栈区用户空间用vmalloc/malloc分配内存,内核空间用kmalloc/vmalloc分配内存。ma

12、lloc:是动态内存分配,用于申请一块连续的指定大小的内存块区域以void*类型返回分配的内存区域地址,函数声明void *malloc(size_t size);vmalloc/kmalloc:在设备驱动程序或者内核模块中动态开辟内存,释放内存用的是kfree,vfree,kmalloc分配的内存是物理上的连续,vmalloc分配的内存只是线性上的连续。4.编写两个进程a和b,使用mmap进行通信,a向共享内存写入字符串“hello”后退出,b接收后打印出来。5.编写一个程序,创建一个子进程,之后父子进程使用mmap函数进行匿名通讯,子进程向共享内存写入字符串“hello

13、”后退出,父进程接收后打印出来,并且等待子进程退出后结束。#include <sys/mman.h> #include <unistd.h> #include <stdio.h> #include <fcntl.h> #include <sys/stat.h> #include <stdlib.h> #include <string.h> #include <errno.h> void mmapcopy(int fd, int size) char *bufp; /void * start_addr

14、 = 0; /start_addr = (void *)0x80000; bufp = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); if (bufp = (void *)-1) fprintf(stderr, "mmap: %sn", strerror(errno); memcpy(bufp, "Linuxdd", 7); write(1, bufp, size); munmap(bufp, size); return; int main(int argc, char *argv) struct stat stat; if (argc != 2) printf("error.n"); exit(0); /int fd = atoi(*argv1); /mmap() int fd =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论