Linux系统编程:验证kernel内核缓存区大小-4096字节
生活随笔
收集整理的這篇文章主要介紹了
Linux系统编程:验证kernel内核缓存区大小-4096字节
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
使用的API
read/write函數 常常被稱為Unbuffered IO。指的是無用戶緩存區。但不保證不使用內核緩存區。我們可以用來驗證內核緩存區的大小是不是4096字節。這里我們還用一個系統函數 dup2 文件描述符重定向函數,來實現 從終端輸入 直接輸出到文件中。
驗證內核緩存區大小
思路很簡單,就是測試4096這個臨界點。
首先往文件中寫4096個字節,查看數據是否寫入到磁盤文件,從終端讀入數據,緩存區4096數據是否寫到磁盤文件。
代碼
#include <stdio.h> #include <string.h> #include <unistd.h> #include <fcntl.h>int main(void) {int fd = open("temp.txt",O_RDWR|O_CREAT|O_TRUNC,0664);char temp[1024]={0};dup2(fd,STDOUT_FILENO);//文件重定向后,往終端輸出的數據,會寫入的文件中//先寫4096B試試,看看能寫入磁盤不for(int i = 0; i < 4096;i++){printf("%c",48);}//kernel緩存區大小為4096!寫到4097字節,緩沖區溢出才會將緩沖區內容寫道磁盤文件,//緩存區繼續放數據while(1){//讀取終端數據read(STDIN_FILENO,temp,sizeof(temp));if(strncmp(temp,"exit",4)==0)break;printf("%s\n",temp);}close(fd);return 0; }啟動程序查看文件數據
程序啟動,寫入4096字節,但是文件數據卻沒有
終端寫入數據并查看
退出程序及驗證結果
驗證結果,寫到4097個字節,內核緩存區要溢出了,才將緩沖區內容寫到磁盤中去,再將數據寫到內核緩存區,等待下一次緩存區滿或者文件關閉 才會將緩存區內容寫到磁盤。
總結
以上是生活随笔為你收集整理的Linux系统编程:验证kernel内核缓存区大小-4096字节的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: makefile 编译不同目录下的源文件
- 下一篇: linux 获取计算机IP地址、MAC、