




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 用電客戶受理員-中級工復(fù)習(xí)題(含答案)
- 2025工程建設(shè)項(xiàng)目施工勞務(wù)分包合同范本
- 農(nóng)村農(nóng)牧綜合開發(fā)項(xiàng)目合同書
- 存量房屋居間買賣合同
- 電商平平臺運(yùn)營及推廣合作框架協(xié)議
- 2025建融金服(河南)科技信息服務(wù)有限公司甘肅分公司招聘30人筆試參考題庫附帶答案詳解
- 2025年蚌埠市龍子湖區(qū)產(chǎn)業(yè)發(fā)展有限公司招聘22人筆試參考題庫附帶答案詳解
- 考前沖刺紡織設(shè)計(jì)師證書考試題目及答案
- 教育評價(jià)改革的路徑與實(shí)踐探索
- 起草合同協(xié)議書
- 零售基礎(chǔ) 課件 第三章 零售用戶思維
- 部編版歷史八年級下冊第四單元 第13課《香港和澳門回歸祖國》說課稿
- 中班數(shù)學(xué)活動建造公園
- 2025年中考英語總復(fù)習(xí):書面表達(dá) 刷題練習(xí)題匯編(含答案解析、范文)
- 警察小學(xué)生安全教育講座
- 分期還款協(xié)議書模板示例
- 幼升小公有住宅租賃合同(2篇)
- 實(shí)驗(yàn)室安全教育課件
- 彩票大數(shù)據(jù)預(yù)測分析
- 4.1基因指導(dǎo)蛋白質(zhì)的合成(第1課時(shí))高一下學(xué)期生物人教版必修2
- 建材商戶入駐協(xié)議書模板
評論
0/150
提交評論