linux知識點(diǎn)總結(jié)_第1頁
linux知識點(diǎn)總結(jié)_第2頁
linux知識點(diǎn)總結(jié)_第3頁
linux知識點(diǎn)總結(jié)_第4頁
linux知識點(diǎn)總結(jié)_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、七:file1. 敘述linux的文件系統(tǒng)框架,并解釋其中各個部分。boot :啟動相關(guān)的程序和配置bin :常用的Linux命令,這些命令通常為可執(zhí)行文件或這些文件的鏈接sbin :通常為根用戶準(zhǔn)備的命令lib :系統(tǒng)常用庫usr :用戶安裝的文件、庫、開發(fā)庫等root :根用戶的用戶文件home :普通用戶的用戶文件etc :系統(tǒng)或程序的配置文件var :系統(tǒng)中服務(wù)器數(shù)據(jù)、日志proc :系統(tǒng)狀態(tài)信息dev :系統(tǒng)設(shè)備mnt、media :其他分區(qū)的掛載點(diǎn)(如Windows磁盤分區(qū)、光盤或軟件等)tmp :臨時(shí)文件lost+found 磁盤孤立扇區(qū)2. 敘述超級塊、inode、dentey

2、和file四大數(shù)據(jù)結(jié)構(gòu)的作用和主要內(nèi)容。超級塊:作用:代表了整個文件系統(tǒng),記錄了文件系統(tǒng)的整體信息內(nèi)容:文件系統(tǒng)的狀態(tài)、文件系統(tǒng)類型、塊大小、區(qū)塊數(shù)、索引節(jié)點(diǎn)數(shù)、臟標(biāo)志、操作方法inode(索引節(jié)點(diǎn))作用:代表了操作系統(tǒng)中的一個文件,無論該文件是否被打開,它都包含了文件操作的所有信息內(nèi)容:文件大小,設(shè)備標(biāo)識符,用戶標(biāo)識符,用戶組標(biāo)識符,文件模式,擴(kuò)展屬性,文件讀取或修改的時(shí)間戳,鏈接數(shù)量,指向存儲該內(nèi)容的磁盤區(qū)塊的指針,文件分類等等。dentey(目錄項(xiàng)):作用:代表了一個目錄,用來組成文件的路徑,并利用其實(shí)現(xiàn)路徑的管理內(nèi)容:包括該目錄對象對應(yīng)的索引節(jié)點(diǎn),子目錄鏈表,父目錄目錄項(xiàng)對象,與它同級

3、的目錄的目錄項(xiàng)對象鏈表,使用計(jì)數(shù),緩存標(biāo)志file(文件):作用:代表了被進(jìn)程打開的文件,是可以讀寫的實(shí)體內(nèi)容:包括相應(yīng)的目錄項(xiàng)對象、使用計(jì)數(shù)、訪問模式、當(dāng)前偏移量、操作方法等3. 什么是文件描述符?它與fopen返回的文件指針有什么關(guān)系?文件描述符是一個索引值,指向內(nèi)核為每一個進(jìn)程所維護(hù)的該進(jìn)程打開文件的記錄表。關(guān)系:fopen返回的文件指針是文件描述符所指向的文件描述符表中的一個表項(xiàng)4. 分別敘述fopen和open的參數(shù)設(shè)置以及它們的區(qū)別。fopen參數(shù):path是指定的文件的路徑,mode是文件的打開模式,模式可以為r、r+、w、w+、a、a+open參數(shù):pathname是欲打開文件

4、的路徑,flags是一些標(biāo)志位,mode是文件的操作權(quán)限。區(qū)別:(1)open返回一個文件描述符(int),fopen返回一個文件指針(FILE*)。(2)open無緩沖,fopen有緩沖。(3)open與 read, write 等配合使用, fopen與 fread, fwrite等配合使用。(4)fopen是在open的基礎(chǔ)上擴(kuò)充而來的,在大多數(shù)情況下,用fopen。5. 敘述pipe和mkfifo兩種管道函數(shù)的區(qū)別。pipe創(chuàng)建匿名管道,mkfifo創(chuàng)建有名管道。pipe管道是進(jìn)程通信的一種形式,mkfifo管道被看作是一個文件6. 使用匿名管道技術(shù),編程實(shí)現(xiàn)“l(fā)s -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. 編寫兩個進(jìn)程a和b,使用有名管道進(jìn)行通信。a向b傳送字符串“

8、hello”,b接收并打印。進(jìn)程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)/創(chuàng)建有名管道,mkfifo(管道文件名,管> 理權(quán)限

9、) /成功返回0 失敗返回-1 perror ("mkefifo error"); exit(0); int fd = open (PATH,O_RDONLY); if (fd<0) printf("open fd is errorn"); return 0;進(jìn)程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); /清空緩沖區(qū),并把緩沖區(qū)的內(nèi)容輸出ssize_t s = read(0,Buf,sizeof(Buf); /ssize_t 一個類型if (s<0) /read(文件標(biāo)識符,數(shù)據(jù)緩沖區(qū),讀取數(shù)據(jù)尺寸) /失敗或中斷返回-1perror("read is failed");exit(1);else if(s

11、=0)printf("read is closed!");return 1;elseBufs= '0' /最后一位,字符串結(jié)束符write(fd,Buf,strlen(Buf); /write(文件表識符,數(shù)據(jù)緩沖區(qū),寫入文件尺寸)return 0; 7.編程以可讀寫方式打開第一個參數(shù)表示的二進(jìn)制文件,改寫里面第三個字節(jié)為0fH,再關(guān)閉它。八:mem1. 敘述進(jìn)程的用戶空間和內(nèi)核空間都有哪些種類,列舉各類內(nèi)存申請函數(shù)并說明之。代碼區(qū)、靜態(tài)數(shù)據(jù)變量、堆區(qū)、棧區(qū)用戶空間用vmalloc/malloc分配內(nèi)存,內(nèi)核空間用kmalloc/vmalloc分配內(nèi)存。ma

12、lloc:是動態(tài)內(nèi)存分配,用于申請一塊連續(xù)的指定大小的內(nèi)存塊區(qū)域以void*類型返回分配的內(nèi)存區(qū)域地址,函數(shù)聲明void *malloc(size_t size);vmalloc/kmalloc:在設(shè)備驅(qū)動程序或者內(nèi)核模塊中動態(tài)開辟內(nèi)存,釋放內(nèi)存用的是kfree,vfree,kmalloc分配的內(nèi)存是物理上的連續(xù),vmalloc分配的內(nèi)存只是線性上的連續(xù)。4.編寫兩個進(jìn)程a和b,使用mmap進(jìn)行通信,a向共享內(nèi)存寫入字符串“hello”后退出,b接收后打印出來。5.編寫一個程序,創(chuàng)建一個子進(jìn)程,之后父子進(jìn)程使用mmap函數(shù)進(jìn)行匿名通訊,子進(jìn)程向共享內(nèi)存寫入字符串“hello

13、”后退出,父進(jìn)程接收后打印出來,并且等待子進(jìn)程退出后結(jié)束。#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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論